/// <summary> /// 实体初始化。 /// </summary> /// <param name="entityId">实体编号。</param> /// <param name="entityGroup">实体所属的实体组。</param> /// <param name="isNewInstance">是否是新实例。</param> /// <param name="userData">用户自定义数据。</param> public void OnInit(int entityId, IEntityGroup entityGroup, bool isNewInstance, object userData) { m_Id = entityId; if (isNewInstance) { m_EntityGroup = entityGroup; } else if (m_EntityGroup != entityGroup) { Log.Error("Entity group is inconsistent for non-new-instance entity."); return; } ShowEntityInfo showEntityInfo = userData as ShowEntityInfo; Type entityLogicType = showEntityInfo.EntityLogicType; if (entityLogicType == null) { Log.Error("Entity logic type is invalid."); return; } m_EntityLogic = gameObject.AddComponent(entityLogicType) as EntityLogic; if (m_EntityLogic == null) { Log.Error("Can not add entity logic."); return; } m_EntityLogic.OnInit(showEntityInfo.UserData); }
/// <summary> /// 实体初始化。 /// </summary> /// <param name="entityId">实体编号。</param> /// <param name="entityAssetName">实体资源名称。</param> /// <param name="entityGroup">实体所属的实体组。</param> /// <param name="isNewInstance">是否是新实例。</param> /// <param name="userData">用户自定义数据。</param> public void OnInit(int entityId, string entityAssetName, IEntityGroup entityGroup, bool isNewInstance, object userData) { m_Id = entityId; m_EntityAssetName = entityAssetName; if (isNewInstance) { m_EntityGroup = entityGroup; } else if (m_EntityGroup != entityGroup) { Log.Error("Entity group is inconsistent for non-new-instance entity."); return; } ShowEntityInfo showEntityInfo = (ShowEntityInfo)userData; Type entityLogicType = showEntityInfo.EntityLogicType; if (entityLogicType == null) { Log.Error("Entity logic type is invalid."); return; } if (m_EntityLogic != null) { if (m_EntityLogic.GetType() == entityLogicType) { m_EntityLogic.enabled = true; return; } Destroy(m_EntityLogic); m_EntityLogic = null; } m_EntityLogic = gameObject.GetComponent(entityLogicType) as EntityLogic; if (m_EntityLogic == null) { m_EntityLogic = gameObject.AddComponent(entityLogicType) as EntityLogic; } if (m_EntityLogic == null) { Log.Error("Entity '{0}' can not add entity logic.", entityAssetName); return; } try { m_EntityLogic.OnInit(showEntityInfo.UserData); } catch (Exception exception) { Log.Error("Entity '[{0}]{1}' OnInit with exception '{2}'.", m_Id.ToString(), m_EntityAssetName, exception.ToString()); } }
/// <summary> /// 实体初始化。 /// </summary> /// <param name="entityId">实体编号。</param> /// <param name="entityAssetName">实体资源名称。</param> /// <param name="entityGroup">实体所属的实体组。</param> /// <param name="isNewInstance">是否是新实例。</param> /// <param name="userData">用户自定义数据。</param> public void OnInit(int entityId, string entityAssetName, IEntityGroup entityGroup, bool isNewInstance, object userData) { m_Id = entityId; m_EntityAssetName = entityAssetName; if (isNewInstance) { m_EntityGroup = entityGroup; } else if (m_EntityGroup != entityGroup) { Log.Error("Entity group is inconsistent for non-new-instance entity."); return; } //从显示实体信息中获取到实体逻辑的Type对象 ShowEntityInfo showEntityInfo = (ShowEntityInfo)userData; Type entityLogicType = showEntityInfo.EntityLogicType; if (entityLogicType == null) { Log.Error("Entity logic type is invalid."); return; } if (m_EntityLogic != null) { if (m_EntityLogic.GetType() == entityLogicType) { //已经添加了相同的实体逻辑脚本时,显示实体 m_EntityLogic.enabled = true; return; } Destroy(m_EntityLogic); m_EntityLogic = null; } //为实体的GameObject添加实体逻辑脚本 m_EntityLogic = gameObject.AddComponent(entityLogicType) as EntityLogic; if (m_EntityLogic == null) { Log.Error("Entity '{0}' can not add entity logic.", entityAssetName); return; } //新添加的实体逻辑脚本才会执行OnInit方法 m_EntityLogic.OnInit(showEntityInfo.UserData); }
/// <summary> /// 实体初始化。 /// </summary> /// <param name="entityId">实体编号。</param> /// <param name="entityAssetName">实体资源名称。</param> /// <param name="entityGroup">实体所属的实体组。</param> /// <param name="isNewInstance">是否是新实例。</param> /// <param name="userData">用户自定义数据。</param> public void OnInit(int entityId, string entityAssetName, IEntityGroup entityGroup, bool isNewInstance, object userData) { m_Id = entityId; m_EntityAssetName = entityAssetName; if (isNewInstance) { m_EntityGroup = entityGroup; } else if (m_EntityGroup != entityGroup) { Log.Error("Entity group is inconsistent for non-new-instance entity."); return; } ShowEntityInfo showEntityInfo = (ShowEntityInfo)userData; Type entityLogicType = showEntityInfo.EntityLogicType; if (entityLogicType == null) { Log.Error("Entity logic type is invalid."); return; } if (m_EntityLogic != null) { if (m_EntityLogic.GetType() == entityLogicType) { m_EntityLogic.enabled = true; return; } Destroy(m_EntityLogic); m_EntityLogic = null; } m_EntityLogic = gameObject.AddComponent(entityLogicType) as EntityLogic; if (m_EntityLogic == null) { Log.Error("Can not add entity logic."); return; } m_EntityLogic.OnInit(showEntityInfo.UserData); }
public void OnInit(int entityId, string entityAssetName, IEntityGroup entityGroup) { m_Id = entityId; m_EntityAssetName = entityAssetName; ShowEntityInfo showEntityInfo = (showEntityInfo)userData; Type entityLogicType = showEntityInfo.EntityLogicType; if (m_EntityLogic != null) { if (m_EntityLogic.GetType() == entityLogicType) { m_EntityLogic.enabled = true; return; } Destroy(m_EntityLogic); m_EntityLogic = null; } m_EntityLogic = gameObject.AddComponent(entityLogicType) as EntityLogic; m_EntityLogic.OnInit(showEntityInfo.UserData); }