Files
JJBB/Assets/Project/Script/GUI/Advance/AdvanceAnimation.cs
2024-08-23 15:49:34 +08:00

105 lines
3.7 KiB
C#

using UnityEngine;
using System.Collections;
using GCGame.Table;
using UnityEngine.UI;
public class AdvanceAnimation : MonoBehaviour {
public Text modelNameText;
public Text stageText;
private const string effectName = "effect";
public void ShowAnimation(int baseId)
{
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(baseId, 0);
if (advanceBase == null)
{
return;
}
Tab_BundlePath bundlePath = TableManager.GetBundlePathByID(advanceBase.ModelId, 0);
if (bundlePath == null)
{
return;
}
string []pos = bundlePath.Pos.Split(';');
Vector3 landPos = new Vector3(float.Parse(pos[0]), float.Parse(pos[1]), float.Parse(pos[2]));
LoadAssetBundle.Instance.LoadGameObject(LoadAssetBundle.BUNDLE_PATH_EFFECT, bundlePath.Name, delegate (string assetName, GameObject resObj, Hashtable hashParam)
{
if (resObj != null)
{
var ani = Instantiate(resObj);
ani.gameObject.name = effectName;
//寻找父节点下是否有effect
Transform oldObj = this.transform.Find(effectName);
if (oldObj == null)
{
ani.transform.SetParent(this.transform);
ani.transform.localPosition = landPos;
ani.transform.localScale = Vector3.one * bundlePath.Scale;
ani.transform.localRotation = Quaternion.Euler(Vector3.zero);
}
else
{
ani.transform.SetParent(oldObj.parent);
ani.transform.localPosition = landPos;
ani.transform.localScale = Vector3.one * bundlePath.Scale;
ani.transform.localRotation = oldObj.localRotation;
GameObject.Destroy(oldObj.gameObject);
}
}
},
new Hashtable());
modelNameText.text = advanceBase.Name;
stageText.text = GCGame.Utils.GetGradeString(advanceBase.Grade);
}
// 直接通过BundelPath中的ID读取资源
public void ShowAnimationByModelID(int modelId)
{
Tab_BundlePath bundlePath = TableManager.GetBundlePathByID(modelId, 0);
if (bundlePath == null)
{
return;
}
string[] pos = bundlePath.Pos.Split(';');
Vector3 landPos = new Vector3(float.Parse(pos[0]), float.Parse(pos[1]), float.Parse(pos[2]));
LoadAssetBundle.Instance.LoadGameObject(LoadAssetBundle.BUNDLE_PATH_EFFECT, bundlePath.Name, delegate (string assetName, GameObject resObj, Hashtable hashParam)
{
if (resObj != null)
{
var ani = Instantiate(resObj);
ani.gameObject.name = effectName;
// 寻找字节下是否有effect
var oldObj = transform.Find(effectName);
if (oldObj == null)
{
ani.transform.SetParent(this.transform);
ani.transform.localPosition = landPos;
ani.transform.localScale = Vector3.one * bundlePath.Scale;
ani.transform.localRotation = Quaternion.Euler(Vector3.zero);
}
else
{
ani.transform.SetParent(oldObj.parent);
ani.transform.localPosition = landPos;
ani.transform.localScale = Vector3.one * bundlePath.Scale;
ani.transform.localRotation = oldObj.localRotation;
GameObject.Destroy(oldObj.gameObject);
}
}
},
new Hashtable());
}
}