diff --git a/Assets/TEngine/Runtime/Entity/Demo/ECSDemoApp.cs b/Assets/TEngine/Runtime/Entity/Demo/ECSDemoApp.cs index f0e8be52..7501af15 100644 --- a/Assets/TEngine/Runtime/Entity/Demo/ECSDemoApp.cs +++ b/Assets/TEngine/Runtime/Entity/Demo/ECSDemoApp.cs @@ -10,26 +10,14 @@ namespace TEngine void Start() { - var entity = Entity.Create(); + var entity = Entity.Create(); entity.AddComponent(); - GameObjectCmpt actor = entity.AddComponent(); - actor.Name = typeof(GameObjectCmpt).ToString(); - actor.gameObject = Instantiate(@object); - actor.transform = actor.gameObject.GetComponent(); - entity.AddComponent(); - entity.CheckDebugInfo(actor.gameObject); + entity.Bind(Instantiate(@object)); Debug.Log(entity.ToString()); - var entity2 = Entity.Create(); - GameObjectCmpt actor2 = entity2.AddComponent(); - actor2.Name = typeof(GameObjectCmpt).ToString(); - actor2.gameObject = Instantiate(@object); - actor2.transform = actor2.gameObject.GetComponent(); - entity2.AddComponent(); - entity2.CheckDebugInfo(actor2.gameObject); + var entity2 = Entity.Create(); + entity2.Bind(Instantiate(@object)); Debug.Log(entity2.ToString()); - - TimerMgr.Instance.AddTimer((args => diff --git a/Assets/TEngine/Runtime/Entity/EntityComponent.cs b/Assets/TEngine/Runtime/Entity/EntityComponent.cs index f921ebe3..2be762e6 100644 --- a/Assets/TEngine/Runtime/Entity/EntityComponent.cs +++ b/Assets/TEngine/Runtime/Entity/EntityComponent.cs @@ -4,7 +4,7 @@ /// Entity构架可以将此组件从Entity上移除这个组件并丢入对象池,给其他此刻需要此组件的Entity使用, /// 因此可以节省大量的内存反复创建和释放, 这也是Entity的特性可以大量重复使用组件 /// - public class EntityComponent : EcsObject + public abstract class EntityComponent : EcsObject { public Entity Entity { get; set; } diff --git a/Assets/TEngine/Runtime/Entity/GameObjectCmpt.cs b/Assets/TEngine/Runtime/Entity/GameObjectCmpt.cs deleted file mode 100644 index ec842884..00000000 --- a/Assets/TEngine/Runtime/Entity/GameObjectCmpt.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace TEngine.EntityModule -{ - /// - /// Entity Actor - /// - public class GameObjectCmpt :EntityComponent - { - public string Name; - public UnityEngine.GameObject gameObject; - public UnityEngine.Transform transform; - - public override void OnDestroy() - { - if (gameObject != null) - { - UnityEngine.GameObject.Destroy(gameObject); - } - } - } -} \ No newline at end of file diff --git a/Assets/TEngine/Runtime/Entity/GameObjectEntity.cs b/Assets/TEngine/Runtime/Entity/GameObjectEntity.cs new file mode 100644 index 00000000..9dc2bea1 --- /dev/null +++ b/Assets/TEngine/Runtime/Entity/GameObjectEntity.cs @@ -0,0 +1,30 @@ +using TEngine.EntityModule; +using UnityEngine; + +public class GameObjectEntity :Entity +{ + public GameObject gameObject; + public Transform tranform; + + public void Bind(GameObject gameObject) + { + this.gameObject = gameObject; + tranform = this.gameObject.transform; + } + + public override void Awake() + { + base.Awake(); + } + + public override void OnDestroy() + { + if (gameObject != null) + { + Object.Destroy(gameObject); + gameObject = null; + } + tranform = null; + base.OnDestroy(); + } +} diff --git a/Assets/TEngine/Runtime/Entity/GameObjectCmpt.cs.meta b/Assets/TEngine/Runtime/Entity/GameObjectEntity.cs.meta similarity index 83% rename from Assets/TEngine/Runtime/Entity/GameObjectCmpt.cs.meta rename to Assets/TEngine/Runtime/Entity/GameObjectEntity.cs.meta index 583093ac..5910082b 100644 --- a/Assets/TEngine/Runtime/Entity/GameObjectCmpt.cs.meta +++ b/Assets/TEngine/Runtime/Entity/GameObjectEntity.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 559f282b0e220ab4e8ccb2342e13aaf2 +guid: de9cbd2c7aab4a74a92303b5a7b14d3e MonoImporter: externalObjects: {} serializedVersion: 2