/// <summary> /// 尽量避免使用Awake等unity控制流程的接口来初始化,而改用自己调用的接口 by吴江 /// </summary> protected override void Init() { height = actorInfo.NameHeight; nameHeight = height; base.Init(); if (headTextCtrl == null) { headTextCtrl = this.gameObject.AddComponent <HeadTextCtrl>(); } animFSM = base.animFSM as PlayerAnimFSM; if (animFSM == null) { animFSM = this.gameObject.GetComponentInChildrenFast <PlayerAnimFSM>(true); } rendererCtrl = base.rendererCtrl as PlayerRendererCtrl; if (rendererCtrl == null) { rendererCtrl = this.gameObject.GetComponentInChildrenFast <PlayerRendererCtrl>(true); } ActiveBoxCollider(true, actorInfo.ColliderRadius); rendererCtrl.Init(actorInfo, fxCtrl); animationRoot.gameObject.transform.localScale *= actorInfo.ModelScale; if (animFSM != null) { animFSM.SetMoveSpeed(CurRealSpeed / (actorInfo.AnimationMoveSpeedBase * actorInfo.ModelScale)); animFSM.OnDeadEnd = OnDeadEnd; } ReBuildMount(); GameObject obj = new GameObject("ShokWaveObj"); obj.transform.parent = this.transform; obj.transform.localPosition = Vector3.zero; obj.transform.localEulerAngles = Vector3.zero; AfsShockWave afsShockWave = obj.AddComponent <AfsShockWave>(); afsShockWave.ShockSpeed = 1.0f; afsShockWave.ShockPower = 1.0f; afsShockWave.ShockDelay = 1.0f; Rigidbody rigidbody = obj.AddComponent <Rigidbody>(); rigidbody.useGravity = false; rigidbody.isKinematic = true; }
IEnumerator CreateAsync(System.Action _callback = null) { if (isDummy_ == false) { GameSys.LogError("You can only start create other player in dummy: " + actorInfo.ServerInstanceID); yield break; } // isDownloading_ = true; //判断是否正在下载,防止重复创建 Model opc = null; PlayerRendererCtrl myRendererCtrl = null; bool faild = false; pendingDownload = Create(actorInfo, delegate(Model _opc, EResult _result) { if (_result != EResult.Success) { faild = true; return; } opc = _opc; pendingDownload = null; myRendererCtrl = opc.gameObject.GetComponentInChildrenFast <PlayerRendererCtrl>(); myRendererCtrl.Show(false); }); while (opc == null || opc.inited == false) { if (faild) { yield break; } yield return(null); } pendingDownload = null; isDownloading_ = false; if (!actorInfo.IsAlive) { opc.Dead(true); } if (_callback != null) { _callback(); } }