public List <InplaceSkillPropertyInfo> GetInplaceSkillPropertyInfos(int skillId)
        {
            List <InplaceSkillPropertyInfo> ret = null;
            SkillInstance inst = GfxSkillSystem.Instance.FindSkillInstanceForSkillViewer(skillId);

            if (null != inst)
            {
                ret = inst.CollectProperties();
                if (null != inst.EmitSkillInstances)
                {
                    foreach (var pair in inst.EmitSkillInstances)
                    {
                        SkillInstance iinst = GfxSkillSystem.Instance.FindInnerSkillInstanceForSkillViewer(PredefinedSkill.c_EmitSkillId, pair.Value);
                        if (null != iinst)
                        {
                            ret.Add(new InplaceSkillPropertyInfo {
                                Group = "InnerSkillInstance", Key = "emitskill" + iinst.InnerDslSkillId
                            });
                            ret.AddRange(iinst.CollectProperties());
                        }
                    }
                }
                if (null != inst.HitSkillInstances)
                {
                    foreach (var pair in inst.HitSkillInstances)
                    {
                        SkillInstance iinst = GfxSkillSystem.Instance.FindInnerSkillInstanceForSkillViewer(PredefinedSkill.c_HitSkillId, pair.Value);
                        if (null != iinst)
                        {
                            ret.Add(new InplaceSkillPropertyInfo {
                                Group = "InnerSkillInstance", Key = "hitskill" + iinst.InnerDslSkillId
                            });
                            ret.AddRange(iinst.CollectProperties());
                        }
                    }
                }
            }
            return(ret);
        }