async Task <GameObject> CreateRoleAsync(string roleId, bool withAI = false, string teamId = "2") { var player = GameManager.Instance.Player1; Debug.Assert(player != null); var target = await AssetManager.Instantiate(Definition.RoleAssetPrefix + roleId + ".prefab"); Debug.Assert(target != null); RoleController roleController = target.GetComponent <RoleController>(); Debug.Assert(roleController != null); if (withAI) { Tools.AddComponent <RoleBehaviorTree>(target); Tools.AddComponent <RoleNavMeshAgent>(target); } // 设置角色队伍 add by TangJian 2017/12/20 22:02:00 roleController.RoleData.TeamId = teamId; SceneManager.Instance.RoleEnterSceneWithLocalPosition(roleController, player.SceneId, new Vector3(player.transform.localPosition.x, player.transform.localPosition.y + 3, player.transform.localPosition.z)); return(target); }
public async Task <GameObject> SpawnAsync(string name) { #if POOL_ENABLE return(PoolManager.Instance.Spawn(name)); #else return(await AssetManager.Instantiate(name)); #endif }
async Task <RoleController> CreatePlayer1Async(PlayerData playerData = null) { playerPrefabName = playerPrefabName == null ? "Human" : playerPrefabName; playerPrefabName = playerPrefabName == "" ? "Human" : playerPrefabName; // GameObject role = GameObjectManager.Instance.Create(playerPrefabName ?? "Human"); var task = AssetManager.Instantiate("Roles/Monster/" + playerPrefabName + ".prefab"); GameObject roleGameObject = await task; roleGameObject.name = "Player1"; roleGameObject.tag = "Player"; roleGameObject.AddComponentUnique <Player1InputController>(); var roleController = roleGameObject.GetComponent <RoleController>(); var roleBehaviorTree = roleGameObject.GetComponent <RoleBehaviorTree>(); var behaviorTree = roleGameObject.GetComponent <BehaviorDesigner.Runtime.BehaviorTree>(); var InteractiveCube = roleGameObject.GetChild("InteractiveCube"); var triggercontroller = InteractiveCube.GetComponent <TriggerController>(); triggercontroller.needKeepingGameObject = true; if (roleBehaviorTree != null) { Tools.Destroy(roleBehaviorTree); } if (behaviorTree != null) { Tools.Destroy(behaviorTree); } roleController._withAI = false; if (false && // 不读档 add by TangJian 2018/9/21 0:03 playerData != null && playerData.currRoleData != null) { roleController.RoleData = playerData.currRoleData; roleController.RoleData.TeamId = "1"; //roleController.RoleData.EquipData.MainHand = ItemManager.Instance.getItemDataById<WeaponData>("swd-1"); //roleController.RoleData.EquipData.OffHand = ItemManager.Instance.getItemDataById<WeaponData>("swd-1"); //roleController.RoleData.EquipData.SoulData = ItemManager.Instance.getItemDataById<SoulData>("Soul-FireBall"); } if (this.player1Data != null) { roleController.RoleData = this.player1Data; } ConstrainedCamera constrainedCamera = Camera.main.GetComponent <ConstrainedCamera>(); constrainedCamera.Player1 = roleGameObject.transform; // 与npc交互 roleController.OnInteractAction = (GameObject gameObject) => { if (gameObject.tag == "NPC") { choiceBubbleController = GameObject.Find("choicebubble").GetComponent <ChoiceBubbleController>(); fsm.SendEvent("AllToTalk"); } }; roleController.PickupConsumable = () => { gamingUIController.RefreshGlist(); }; roleController.OnDying += (RoleController _roleController) => { // 掉装备 add by TangJian 2019/3/14 11:45 Debug.Log("掉装备"); }; return(roleController); }