【UNET自学日志】Part18 修复一些错误
来源:互联网 发布:淘宝网沙发布料 编辑:程序博客网 时间:2024/06/08 19:45
首先,我们需要的是新建一个空物体“SpawnManager”,将GameManager中的SpawnManaer_ZombieSpawner拖到SpawnManager中,并移除GameManager中的NetworkIdentity,SpawnManager中添加NetworkIdentity,并勾选Server Only选项
第二,打开最开始的脚本Player_NetworkSetup,修改其代码(去掉原来的Start函数,将Start函数中的内容复制到OnStartLocalPlayer中)
using UnityEngine;using System.Collections;using UnityEngine.Networking;public class Player_NetworkSetup : NetworkBehaviour { [SerializeField] Camera FPSCharacterCam; [SerializeField] AudioListener audioListener; public override void OnStartLocalPlayer() { GameObject.Find("Scene Camera").SetActive(false); //GetComponent<CharacterController>().enabled = true; GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = true; FPSCharacterCam.enabled = true; audioListener.enabled = true; }}
public override void PreStartClient() { healthScript = GetComponent<Player_Health>(); healthScript.EventDie += DisablePlayer; } public override void OnStartClient() { crossHairImage = GameObject.Find("crossHairImage").GetComponent<Image>(); }
第四,打开脚本Player_Health,修改其代码(去掉原来的Start函数,将Start函数中的内容复制到OnStartLocalPlayer中)
public override void OnStartLocalPlayer() { healthText = GameObject.Find("Health Text").GetComponent<Text>(); SetHealthText(); }
第五,打开脚本Player_Respawn,修改其代码(去掉原来的Start函数,将Start函数中的内容复制到OnStartLocalPlayer和PreStartClient中),将OnDisable函数重新更名为public override void OnNetworkDestroy()
public override void PreStartClient() { healthScript = GetComponent<Player_Health>(); healthScript.EventRespawn += EnablePlayer; } public override void OnStartLocalPlayer() { crossHairImage = GameObject.Find("crossHairImage").GetComponent<Image>(); SetRespawnButton(); }
第六,在预制件Player中,关掉Player_SyncPosition脚本,添加Network Transform,将其SendRate改为11,SyncMode改为Sync Character Controller,Rotation Axis改为None,新建一个Player_Latency脚本,将Player_SyncPosition脚本中关于显示延迟的代码复制到其中(PS;理由是Network Transform的Sync Character Controller模式已经能够十分平滑的移动物体了= =之前的Player_SyncPosition就当是了解其中的机制吧。。。)
using UnityEngine;using System.Collections;using UnityEngine.Networking;using UnityEngine.UI;public class Player_Latency : NetworkBehaviour { private NetworkClient nClient; private int latency; private Text latencyText; public override void OnStartLocalPlayer() { nClient = GameObject.Find("NetworkManager").GetComponent<NetworkManager>().client; latencyText = GameObject.Find("Latency Text").GetComponent<Text>(); }void Update () { ShowLatency();} void ShowLatency() { if (isLocalPlayer) { latency = nClient.GetRTT(); latencyText.text = latency.ToString(); } }}
0 0
- 【UNET自学日志】Part18 修复一些错误
- 【UNET自学日志】Part8 射击
- 【UNET自学日志】Part12 僵尸
- 【UNET自学日志】Part20 UI
- 【UNET自学日志】Part1 UNET的设置与运动同步
- 【UNET自学日志】Part2 旋转同步
- 【UNET自学日志】Part4 模拟延迟
- 【UNET自学日志】Part7 独一无二的ID
- 【UNET自学日志】Part9 造成伤害
- 【UNET自学日志】Part10 摧毁玩家
- 【UNET自学日志】Part11 玩家复活
- 【UNET自学日志】Part14 射击那些僵尸
- 【UNET自学日志】Part15 僵尸攻击玩家
- 【UNET自学日志】Part3 变得更有效率一点
- 【UNET自学日志】Part6 更有效率的旋转同步
- 【UNET自学日志】Part 13 僵尸的ID
- 【UNET自学日志】Part 17 更好的重生
- 【UNET自学日志】Part19 第一次尝试匹配系统
- 第一课程序框架的构建——C#计算器编程教学
- 让UILabel的文字顶部对齐
- Qt使用中的小问题
- #pragma used
- Struts2<s:iterator value="" var="lst">中var的使用和一些标签的使用体会
- 【UNET自学日志】Part18 修复一些错误
- poj1129Channel Allocation 乱做,dfs或+四色定理
- Android_Proguard代码混淆器
- 2016你必须知道的IT圈十二大科技常用语
- 发送以个隐式intent,打开系统的联系人界面编辑contact的信息
- # used
- 关于oracle 实例名大小写的问题
- 使用Objective-C的文档生成工具:appledoc
- CodeForces 666A. Reberland Linguistics【DP】