《组合变身小宠物游戏》PetCombine宠物组合(修改更新中)【初学者】
最新推荐文章于 2024-04-01 22:05:50 发布

等木鱼的猫 于 2016-08-29 15:42:28 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
这个组合功能功能类似于角色扮演类游戏《妖精组合》中的组合功能,一般是用两个低等级的宠物合成更高等级的宠物。xml表中有合成的公式。
using UnityEngine;
using System.Collections;
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;
public class PetCombine : MonoBehaviour {
public static PetCombine self;
public GameObject parentObj;
public GameObject Box1;
public GameObject Box2;
public GameObject Box3;
public Text TextRemindTwoPets;
public Text TextSorryData;
public IEnumerator WaitSecondShow(){
yield return new WaitForSeconds(1);
if (Box3.transform.FindChild("petItem(Clone)")!=null)
Destroy(Box3.transform.FindChild("petItem(Clone)").gameObject);
InitPetHaveData();
}
public IEnumerator RemindChooseTwoPets()
{
TextRemindTwoPets.gameObject.SetActive(true);
yield return new WaitForSeconds(1);
TextRemindTwoPets.gameObject.SetActive(false);
}
public IEnumerator SorryNoData()
{
TextSorryData.gameObject.SetActive(true);
yield return new WaitForSeconds(1);
TextSorryData.gameObject.SetActive(false);
}
public int ItemNumber
{
get
{
return Fighting.self.PlayerPetItemList.Count;
}
}
private List<GameObject>gridItemobj = new List<GameObject>();
private Hashtable recordPetData = new Hashtable();
void Awake()
{
self = this;
}
void Start()
{
TextRemindTwoPets.gameObject.SetActive(false);
}
void OnEnable()
{
InitPetHaveData();
}
void Update()
{
if (Input.GetMouseButtonUp(0))
{
int id1 = 0, recordid1 = 0;
int id2 = 0, recordid2 = 0;
if ((Box1.transform.FindChild("PlayerPetChooseItem(Clone)") == null || Box2.transform.FindChild("PlayerPetChooseItem(Clone)")==null) && Box3.transform.FindChild("petItem(Clone)") != null)
Destroy(Box3.transform.FindChild("petItem(Clone)").gameObject);
if (Box1.transform.FindChild("PlayerPetChooseItem(Clone)") && Box2.transform.FindChild("PlayerPetChooseItem(Clone)"))
{
GameObject item1 = Box1.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject;
id1 = item1.GetComponent<PlayerPetChooseItem>().data.id;
recordid1 = item1.GetComponent<PlayerPetChooseItem>().recordId;
GameObject item2 = Box2.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject;
id2 = item2.GetComponent<PlayerPetChooseItem>().data.id;
recordid2 = item2.GetComponent<PlayerPetChooseItem>().recordId;
PetCombineXmlData data = ConfigManager.Instance.GetPetCombineDicData(id1, id2);
if (data == null)
{
if (Box3.transform.FindChild("petItem(Clone)") != null) { Destroy(Box3.transform.FindChild("petItem(Clone)").gameObject); }
}
else
{
int CombineId = 0;
CombineId = data.CombineId;
GameObject gridItem = Resources.Load("Prefabs/item/petItem", typeof(GameObject)) as GameObject;
if (Box3.transform.FindChild("petItem(Clone)") != null)
Debug.Log("原有组合id" + Box3.transform.FindChild("petItem(Clone)").gameObject.GetComponent<PlayerPetChooseItem>().data.id);
Debug.Log("新组合id" + CombineId);
if (Box3.transform.FindChild("petItem(Clone)") != null && Box3.transform.FindChild("petItem(Clone)").gameObject.GetComponent<PlayerPetChooseItem>().data.id != CombineId)
{
Destroy(Box3.transform.FindChild("petItem(Clone)").gameObject);
GameObject obj = GameObject.Instantiate(gridItem) as GameObject;
obj.GetComponent<petItem>().UpdatepetItemData(CombineId);
obj.transform.parent = Box3.transform;
obj.transform.localPosition = Vector3.zero;
obj.transform.localScale = Vector3.one;
}
if (Box3.transform.FindChild("petItem(Clone)") == null)
{
GameObject obj = GameObject.Instantiate(gridItem) as GameObject;
obj.GetComponent<petItem>().UpdatepetItemData(CombineId);
obj.transform.parent = Box3.transform;
obj.transform.localPosition = Vector3.zero;
obj.transform.localScale = Vector3.one;
}
if (Box3.transform.FindChild("petItem(Clone)").gameObject.GetComponent<PlayerPetChooseItem>().data.id == CombineId)
{
}
}
}
}
}
public void InitPetHaveData()
{
recordPetData = DataRecord.GetPetList();
foreach(GameObject obj in gridItemobj)
{
Destroy(obj);
}
gridItemobj.Clear();
GameObject BoxgridItem = Resources.Load("Prefabs/item/BoxGrid", typeof(GameObject)) as GameObject;
GameObject PetgridItem = Resources.Load("Prefabs/item/PlayerPetChooseItem", typeof(GameObject)) as GameObject;
foreach (DictionaryEntry itemx in recordPetData)
{
if (itemx.Value == null)
continue;
Hashtable data = itemx.Value as Hashtable;
GameObject gridobj = GameObject.Instantiate(BoxgridItem) as GameObject;
gridobj.name = "BoxGrid" + (gridItemobj.Count + 1).ToString();
gridobj.transform.parent = parentObj.transform;
gridobj.transform.localPosition = Vector3.zero;
gridobj.transform.localScale = Vector3.one;
gridItemobj.Add(gridobj);
GameObject petobj = GameObject.Instantiate(PetgridItem) as GameObject; ;
petobj.GetComponent<PlayerPetChooseItem>().UpdatePlayerPetChooseItemData(int.Parse(itemx.Key.ToString()), DataRecord.TranslateData(data));
petobj.transform.parent = gridobj.transform;
petobj.transform.localPosition = Vector3.zero;
petobj.transform.localScale = Vector3.one;
}
}
public void OnClickBtnBack()
{
UIManager.instance.HidePanel(UIPanelNames.PetCombinePanel);
RoleControl.self.IsCanMove = false;
RoleControl.self.IsInFight = false;
if (Box1.transform.FindChild("PlayerPetChooseItem(Clone)")!=null)
{ Destroy( Box1.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject); }
if (Box2.transform.FindChild("PlayerPetChooseItem(Clone)")!=null)
{ Destroy( Box2.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject); }
}
public void OnClickCombine()
{
int id1 = 0, recordid1=0;
int id2 = 0, recordid2=0;
if (Box1.transform.FindChild("PlayerPetChooseItem(Clone)") && Box2.transform.FindChild("PlayerPetChooseItem(Clone)"))
{
GameObject item1 = Box1.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject;
id1 = item1.GetComponent<PlayerPetChooseItem>().data.id;
recordid1 = item1.GetComponent<PlayerPetChooseItem>().recordId;
GameObject item2 = Box2.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject;
id2 = item2.GetComponent<PlayerPetChooseItem>().data.id;
recordid2 = item2.GetComponent<PlayerPetChooseItem>().recordId;
}
else
{
Debug.Log("error");
StartCoroutine(RemindChooseTwoPets());
return;
}
PetCombineXmlData data = ConfigManager.Instance.GetPetCombineDicData(id1, id2);
if (data == null)
{
Debug.Log("XML数据缺少,待增加");
StartCoroutine(SorryNoData());
}
else
{
int CombineId = 0;
CombineId = data.CombineId;
if (Box1.transform.FindChild("PlayerPetChooseItem(Clone)")) Destroy(Box1.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject);
if (Box2.transform.FindChild("PlayerPetChooseItem(Clone)")) Destroy(Box2.transform.FindChild("PlayerPetChooseItem(Clone)").gameObject);
StartCoroutine(WaitSecondShow());
DataRecord.DelPet(recordid1);
DataRecord.DelPet(recordid2);
DataRecord.AddPet(ConfigManager.Instance.GetPetData(CombineId));
}
}
}
运行动态图:

相关知识
《组合变身小宠物游戏》DataRecord(修改更新中)【初学者】
一种控制宠物体重的功能组合物的制作方法
糖糖宠物派对游戏下载
一种宠物用组合物及其应用
一种植萃除虫组合物及其在宠物洗护产品中的应用
一种用于治疗宠物肝病的中药组合
电子宠物游戏java
一种控制宠物体重的功能组合物
《神武4》手游驭兽技能如何搭配?这些固定组合一定要学会
5.4版本对战宠物训练师推荐 附常见组合心得
原文链接: 《组合变身小宠物游戏》PetCombine宠物组合(修改更新中)【初学者】 https://m.mcbbbk.com/newsview78245.html
| 上一篇: VV语音宠物游戏如何查看排行榜 | 下一篇: 快乐宠物游戏下载 |



