예제 #1
0
        public override Player BuildInClient(Player obj, PlayerBuildInfo info)
        {
            if (info.id == Clients.Client.instance.myID)
            {
                obj.gameObject.AddComponent <InputSender>();
                Camera.main.gameObject.AddComponent <CameraTrack>().trackPlayer = obj.transform;
            }
            obj.InitBars();
            int barOffset = 0;

            obj.barList.ForEach((Bar bar) =>
            {
                InitBarRigidbody(bar.gameObject.AddComponent <Rigidbody>());
                Animator ani = InitBarAnimator(bar.gameObject.AddComponent <Animator>());
                if (info.id == Clients.Client.instance.myID)
                {
                    bar.gameObject.AddComponent <HeroBarCollision>().InitAnimator(ani);
                }
                else
                {
                    bar.gameObject.AddComponent <Clients.BarCollision>().InitAnimator(ani);
                }
                bar.Init(StageObjectCategory.Dynamic, info.firstBar + barOffset);
                bar.InitMeshRenderer();
                barOffset++;
            });
            Team team = TeamManager.instance.TryAddTeamByDescribe(info.teamDescribe);

            if (team != null)  //如果客户端新加了队伍,尝试寻找球门
            {
                TeamManager.instance.TryGetGoalFromCache(team);
            }
            TeamManager.instance.AddToTeam(obj, info.teamDescribe.id);

            ResourcesManager.LoadAndInstantiate("ChargeParticle", obj.transform, (GameObject g) =>
            {
                obj.gameObject.AddComponent <PlayerCharge>().Init(obj, g.GetComponent <ParticleSystem>());
            });
            return(obj);
        }
예제 #2
0
        /// <summary>
        /// 通过BuildInfo实例化Prefab(初始化位置信息)
        /// </summary>
        /// <param name="info">给定的BuildInfo</param>
        /// <returns></returns>
        public GameObject InstantiateByInfo(Tinfo info)
        {
            Debug.Log($"由{GetType().Name} 创建 {info.category} - {info.id}");
            GameObject prefab = ResourcesManager.Get <GameObject>(info.prefabName);

            if (prefab)
            {
                if (info.position == null && info.rotation == null)
                {
                    return(Object.Instantiate(prefab));
                }
                else
                {
                    Vector3    pos = info.position == null ? Vector3.zero : info.position.Value;
                    Quaternion rot = info.rotation == null ? Quaternion.identity : info.rotation.Value;
                    return(Object.Instantiate(prefab, pos, rot));
                }
            }
            else
            {
                Debug.Log($"没有找到名为{info.prefabName}的Prefab");
            }
            return(null);
        }