Unity5之Network本地物体进行颜色标记

在Unity多人网络游戏中,为了区分本地玩家与远程玩家,通过更改本地玩家模型颜色为蓝色来实现视觉上的区别。利用NetworkBehaviour特性,在OnStartLocalPlayer方法中修改玩家模型材质颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇博客里,Network人物同步移动的功能已经实现。

因为客户端里的所有人物都是一个模样。所以要区分出本地人物,最简单的方法就是让人物颜色改变。我们让本地人物变成蓝色,而看到的其他的客户端没有变。

新建一个场景,用第一人称角色控制器来代替主角,名曰FPSControllerSSS(没错!就是这么随意的名字,老夫向来都很随意命名。),在Hierarchy的目录下可以看到主角的下面有一个Cube,这个就是用来看到主角的形态的(第一人称控制器自己是看不到自己的),也就是只要把这个Cube的颜色改变了就可以了。


当然了主角的设置还是要和上一篇博客的一样,默认把摄像机、角色控制器、第一人称控制器这些组件给关闭掉,然后加上network identity (勾选上Local player authority)和 network transform组件(选择sync Transform)。


上面都完成了就开始写代码了。把下面代码绑定到主角身上就可以。

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条件里是一样的。此处就是为了介绍一个新方法特意用的新方法。

看运行结果(本地角色颜色初始变为蓝色,而看到的其他的角色还是白色):



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值