DefaultEntityHelper.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using GameFramework.Entity;
  8. using UnityEngine;
  9. namespace UnityGameFramework.Runtime
  10. {
  11. /// <summary>
  12. /// 默认实体辅助器。
  13. /// </summary>
  14. public class DefaultEntityHelper : EntityHelperBase
  15. {
  16. private ResourceComponent m_ResourceComponent = null;
  17. /// <summary>
  18. /// 实例化实体。
  19. /// </summary>
  20. /// <param name="entityAsset">要实例化的实体资源。</param>
  21. /// <returns>实例化后的实体。</returns>
  22. public override object InstantiateEntity(object entityAsset)
  23. {
  24. return Instantiate((Object)entityAsset);
  25. }
  26. /// <summary>
  27. /// 创建实体。
  28. /// </summary>
  29. /// <param name="entityInstance">实体实例。</param>
  30. /// <param name="entityGroup">实体所属的实体组。</param>
  31. /// <param name="userData">用户自定义数据。</param>
  32. /// <returns>实体。</returns>
  33. public override IEntity CreateEntity(object entityInstance, IEntityGroup entityGroup, object userData)
  34. {
  35. GameObject gameObject = entityInstance as GameObject;
  36. if (gameObject == null)
  37. {
  38. Log.Error("Entity instance is invalid.");
  39. return null;
  40. }
  41. Transform transform = gameObject.transform;
  42. transform.SetParent(((MonoBehaviour)entityGroup.Helper).transform);
  43. return gameObject.GetOrAddComponent<Entity>();
  44. }
  45. /// <summary>
  46. /// 释放实体。
  47. /// </summary>
  48. /// <param name="entityAsset">要释放的实体资源。</param>
  49. /// <param name="entityInstance">要释放的实体实例。</param>
  50. public override void ReleaseEntity(object entityAsset, object entityInstance)
  51. {
  52. m_ResourceComponent.UnloadAsset(entityAsset);
  53. Destroy((Object)entityInstance);
  54. }
  55. private void Start()
  56. {
  57. m_ResourceComponent = GameEntry.GetComponent<ResourceComponent>();
  58. if (m_ResourceComponent == null)
  59. {
  60. Log.Fatal("Resource component is invalid.");
  61. return;
  62. }
  63. }
  64. }
  65. }