using Cysharp.Threading.Tasks; using Gameplay.Emoji; using Gameplay.Level; using Gameplay.Performance; using Gameplay.Unit; using PhxhSDK; using UnityEngine; namespace Gameplay.Character { public partial class Character { public async UniTask CreateAsync() { var modelPath = runtimeData.configData.modelPath; GameUnitManager.instance.RecordLoadPath(modelPath); await AssetManager.Instance.LoadAssetAsync(modelPath); var obj = Load(runtimeData.configData.modelPath); PerformanceManager.instance.HandleCreateUnit(obj); await _OnObjLoaded(obj); } private async UniTask _OnObjLoaded(GameObject obj) { var isEnemy = troopId != ETroopsId.Self; emojiManager = EmojiManager.inst.InitCharacter(this); // emoji 会替换outline,所以要在emoji之后 OutlineManager.instance.AutoAddFromObj(obj, isEnemy); cAnim = new CharacterAnim(this); await cAnim.Init(); weapon = new Weapon.ViewWeapon(this); } protected override void UpdateGameObjectName() { SetName($"Character_{GetID()}"); DebugUtil.Log(Node.GameObject.name); } protected override void OnDispose() { base.OnDispose(); emojiManager.Dispose(); SelecterView.Instance.UnSelect(Node); } } }