public UnitDefine GetUnitByID(int ID, UnitDefine def = default(UnitDefine))
        {
            UnitDefine ret;

            if (_UnitByID.TryGetValue(ID, out ret))
            {
                return(ret);
            }

            if (def == default(UnitDefine))
            {
                TableLogger.ErrorLine("GetUnitByID failed, ID: {0}", ID);
            }

            return(def);
        }
        public static void Deserialize(UnitDefine ins, tabtoy.DataReader reader)
        {
            int tag = -1;

            while (-1 != (tag = reader.ReadTag()))
            {
                switch (tag)
                {
                case 0x10000:
                {
                    ins.ID = reader.ReadInt32();
                }
                break;

                case 0x60001:
                {
                    ins.Name = reader.ReadString();
                }
                break;

                case 0x10002:
                {
                    ins.Camp = reader.ReadInt32();
                }
                break;

                case 0x10003:
                {
                    ins.Type = reader.ReadInt32();
                }
                break;

                case 0x60004:
                {
                    ins.Skin = reader.ReadString();
                }
                break;

                case 0x10005:
                {
                    ins.Skills.Add(reader.ReadInt32());
                }
                break;

                case 0x10006:
                {
                    ins.Hp = reader.ReadInt32();
                }
                break;

                case 0x10007:
                {
                    ins.Mp = reader.ReadInt32();
                }
                break;

                case 0x10008:
                {
                    ins.Def = reader.ReadInt32();
                }
                break;

                case 0x10009:
                {
                    ins.PhyAtk = reader.ReadInt32();
                }
                break;

                case 0x1000a:
                {
                    ins.MagAtk = reader.ReadInt32();
                }
                break;

                case 0x1000b:
                {
                    ins.Hit = reader.ReadInt32();
                }
                break;

                case 0x1000c:
                {
                    ins.Dod = reader.ReadInt32();
                }
                break;

                case 0x1000d:
                {
                    ins.CritRate = reader.ReadInt32();
                }
                break;
                }
            }
        }