using ECM2; using ECM2.Examples.FirstPerson; using Fantasy.Async; using NBC; using Fantasy.Entitas; using Fantasy.Entitas.Interface; using RootMotion.FinalIK; using UnityEngine; namespace NBF.Fishing2 { /// /// Unit 对应的unity对象组件 /// public class UnitUnityComponent : Entity { public GameObject GameObject { get; set; } public GameObject ModelGameObject { get; set; } public Transform Transform { get; set; } public PlayerModelAsset ModelAsset { get; set; } public CharacterMovement Character { get; set; } public FirstPersonCharacter FirstPerson { get; set; } public PlayerRootAsset RootAsset { get; set; } #region System public class UnitUnityComponentDestroySystem : DestroySystem { protected override void Destroy(UnitUnityComponent self) { if (self.GameObject != null) { Object.Destroy(self.GameObject); } self.ModelAsset = null; self.GameObject = null; self.Transform = null; self.Character = null; self.FirstPerson = null; self.RootAsset = null; } } #endregion public async FTask InitUnityObject() { var gameObject = PrefabsHelper.CreatePlayer(SceneSettings.Instance.Node); GameObject = gameObject; Transform = gameObject.transform; Transform.localPosition = new Vector3(484, 1, 422); Parent.GetOrAddComponent(); Character = gameObject.GetComponent(); FirstPerson = gameObject.GetComponent(); RootAsset = gameObject.GetComponent(); // Parent.GetOrAddComponent(); var modelObject = PrefabsHelper.CreatePlayer(RootAsset.Root, "Human_Male"); modelObject.transform.localPosition = Vector3.zero; ModelGameObject = modelObject; ModelAsset = modelObject.GetComponent(); Parent.GetOrAddComponent(); Parent.GetOrAddComponent(); Parent.GetOrAddComponent(); } } }