Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / activity / ActivityObject_Create.cs
@小李xl 小李xl on 21 Feb 2024 1 KB 游戏大厅, 开发中
  1.  
  2. using System;
  3. using Config;
  4.  
  5. public partial class ActivityObject
  6. {
  7. /// <summary>
  8. /// 通过 ActivityBase 实例化 ActivityObject 对象
  9. /// </summary>
  10. public static ActivityObject Create(ExcelConfig.ActivityBase config)
  11. {
  12. var world = World.Current;
  13. if (world == null)
  14. {
  15. throw new Exception("实例化 ActivityObject 前请先调用 'GameApplication.Instance.CreateNewWorld()' 初始化 World 对象");
  16. }
  17. var instance = ResourceManager.LoadAndInstantiate<ActivityObject>(config.Prefab);
  18. instance._InitNode(config, world);
  19. return instance;
  20. }
  21.  
  22. /// <summary>
  23. /// 通过 ActivityBase 实例化 ActivityObject 对象
  24. /// </summary>
  25. public static T Create<T>(ExcelConfig.ActivityBase config) where T : ActivityObject
  26. {
  27. return (T)Create(config);
  28. }
  29. /// <summary>
  30. /// 通过 ItemId 实例化 ActivityObject 对象
  31. /// </summary>
  32. public static ActivityObject Create(string itemId)
  33. {
  34. if (ExcelConfig.ActivityBase_Map.TryGetValue(itemId, out var config))
  35. {
  36. return Create(config);
  37. }
  38. Debug.LogError("创建实例失败, 未找到id为'" + itemId + "'的物体!");
  39. return null;
  40. }
  41.  
  42. /// <summary>
  43. /// 通过 ItemId 实例化 ActivityObject 对象
  44. /// </summary>
  45. public static T Create<T>(string itemId) where T : ActivityObject
  46. {
  47. var instance = Create(itemId);
  48. if (instance != null)
  49. {
  50. return (T)instance;
  51. }
  52. return null;
  53. }
  54. }