学习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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值