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; } }
public override void destroy() { base.destroy(); foreach (var character in mCharacterGUIDList) { character.Value.destroy(); } mCharacterTypeList = null; mCharacterGUIDList = null; mFixedUpdateList = null; mMyself = null; }