马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册帐号
x
好久没来了,发个贴证明我还活着!此贴内容为network的基础性应用所以大佬请出门左拐?。?! 其实这个帖子是接着我去年的一个帖子讲的,时隔半年我又复活了。上一篇的连接是://www.d0po.cn/thread-110368-1-1.html 下面开始正式进入内容: 因为客户端里的所有人物都是一个模样。所以要区分出本地人物,最简单的方法就是让人物颜色改变。我们让本地人物变成蓝色,而看到的其他的客户端没有变。 新建一个场景,用第一人称角色控制器来代替主角,名曰FPSControllerSSS(没错!就是这么随意的名字,老夫向来都很随意命名。),在Hierarchy的目录下可以看到主角的下面有一个Cube,这个就是用来看到主角的形态的(第一人称控制器自己是看不到自己的),也就是只要把这个Cube的颜色改变了就可以了。 ![]()
当然了主角的设置还是要和上一篇博客的一样,默认把摄像机、角色控制器、第一人称控制器这些组件给关闭掉,然后加上network identity (勾选上Local player authority)和 network transform组件(选择sync Transform)。 ![]()
上面都完成了就开始写代码了。把下面代码绑定到主角身上就可以。 [csharp] view plain copy
- using UnityEngine;
- using System.Collections;
- using UnityEngine.Networking;
- public class playernetwork : NetworkBehaviour
- {
-
- [SerializeField]
- public Camera fpscamera;
- public GameObject CUBE;
-
- // Use this for initialization
- void Start()
- {
-
- if (isLocalPlayer)//只有本客户端的角色才会执行
-
- {
- GetComponent<CharacterController>().enabled = true;
- GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = true;
- fpscamera.enabled = true;
-
- }
- }
- /// <summary>
- /// 这个方法只会在本地角色那里调用,当角色被创建的时候就被调用
- /// </summary>
- public override void OnStartLocalPlayer()
- {
- CUBE.GetComponent<MeshRenderer>().material.color = Color.blue;
- }
- }
下面的OnStartLocalPlayer方法是只会在本地调用,而且是一开始运行就调用。把改变颜色的代码写到上面的start方法里的isLocalPlayer条件里是一样的。此处就是为了介绍一个新方法特意用的新方法。 看运行结果:
|