public Character createCharacter(string name, Type type, ulong id, bool createNode)
    {
        if (mCharacterGUIDList.containsKey(id))
        {
            logError("there is a character id : " + id + "! can not create again!");
            return(null);
        }
        Character newCharacter = createInstance <Character>(type);

        newCharacter.setName(name);
        newCharacter.setCharacterType(type);
        // 如果是玩家自己,则记录下来
        if (newCharacter is ICharacterMyself)
        {
            if (mMyself != null)
            {
                logError("Myself has exist ! can not create again, name : " + (name != null ? name : EMPTY));
                return(null);
            }
            mMyself = newCharacter as ICharacterMyself;
        }
        // 将角色挂接到管理器下
        if (createNode)
        {
            GameObject charNode = createGameObject(newCharacter.getName(), mObject);
            newCharacter.setObject(charNode);
        }
        newCharacter.setID(id);
        newCharacter.init();
        addCharacterToList(newCharacter);
        return(newCharacter);
    }
 protected void destroyCharacter(Character character)
 {
     removeCharacterFromList(character);
     character.destroy();
     if (mMyself == character)
     {
         mMyself = null;
     }
 }
示例#3
0
 public override void destroy()
 {
     base.destroy();
     foreach (var character in mCharacterGUIDList)
     {
         character.Value.destroy();
     }
     mCharacterTypeList = null;
     mCharacterGUIDList = null;
     mFixedUpdateList   = null;
     mMyself            = null;
 }