示例#1
0
        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);
        }
示例#2
0
        public async Task <GameObject> SpawnAsync(string name)
        {
#if POOL_ENABLE
            return(PoolManager.Instance.Spawn(name));
#else
            return(await AssetManager.Instantiate(name));
#endif
        }
示例#3
0
        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);
        }