public virtual void SetAgent(BattleEntity entity) { agent = entity; if (agent == null || agent.param == null) { return; } param = agent.param.GetAction(type); if (param != null) { weight = param.weight; duration = duration == 0 ? param.duration : duration; var plugins = param.GetParams <EntityParamPlugin>(); for (int i = 0; i < plugins.Count; ++i) { try { ActionPlugin plugin = ObjectPool.GetInstance <ActionPlugin>(plugins[i].plugin); if (plugin != null) { plugin.Init(plugins[i]); plugin.agent = agent; plugin.action = this; AddSubState(plugin); } } catch (Exception e) { Debug.LogError(e.Message); } } } }