学习UNET的记录一--SyncVar的使用

最近在学习使用UNET,记录下学习过程中用到的一些知识点。

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class MyTest : NetworkBehaviour
{
    [Range(0, 10)] //在Inpsector界面上,num的取值范围被限定在了[0,10];在脚本中,还是可以随意改变其值,没有限制。
    public int num;

    [SerializeField]
    [Range(0, 2.5f)]
    private float num2;

    //成员变量通过[SyncVar]标签被配置成同步的变量
    //同步变量可以是基础类型,如整数,字符串和浮点数。
    //也可以是Unity内置数据类型,如Vector3和用户自定义的结构体,
    //但是对结构体类型的同步变量,如果只有几个字段的数值有变化,整个结构体都会被发送。
    //每个NetworkBehaviour脚本可以有最多32个同步变量,包括同步列表
    [SyncVar]
    int num3;

    //当同步变量有变化时,服务器会自动发送他们的最新数据。不需要手工为同步变量设置任何的脏数据标志位。
    //注意在属性设置函数中设置一个同步变量的值不会使他的脏数据标志被设置。如果这样做的话,
    //会得到一个编译期的警告。因为同步变量使用他们自己内部的标识记录脏数据状态,在属性设置函数中设置脏位会引起递归调用问题。

    //同步变量还可以指定函数,使用hook;
    //当服务器改变了playerHP的值,客户端会调用ChangHP这个函数
    //这个值是以服务器为准。就算客户端改变了,服务器改变之后,客户端还是显示服务器的数据
    [SyncVar(hook = "ChangHP")]
    public int playerHP = 100;
    
    public void ChangHP(int newHP)
    {
        playerHP = newHP;
    }

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            playerHP -= 10;
        }
        if (Input.GetKeyDown(KeyCode.B))
        {
            playerHP -= 20;
        }
    }

}
学习过程中,找到了以下网页:

http://www.cnblogs.com/xianunity/p/5646138.html

http://www.cnblogs.com/wangergo/p/5021310.html?mType=Group

阅读更多
文章标签: UNET
个人分类: unity--UNET
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

学习UNET的记录一--SyncVar的使用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭