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

原创 2017年01月03日 14:44:31

最近在学习使用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 SyncVar同步信息

原文: UNET SyncVar 这篇文章讨论unity网游中的同步状态。我们开始先总结一下unity已有的(传统的)网络系统,再转移到它如何在新的UNET网络系统中运行,还有制作过程中引起...
  • haobaworenle
  • haobaworenle
  • 2017年01月11日 16:26
  • 1395

Unity&网络--HLAPI(1):服务器同步变量,‘脏标’模式以及[SyncVar]特性

在网络游戏中,大部分事务都是在服务器内进行和处理的,例如NPC被玩家攻击后减HP,服务器需要将变化的HP值传到各个客户端,客户端更新此HP值后,玩家们电脑中的NPC才会掉血,这种同步变量是网络游戏中最...
  • liu_if_else
  • liu_if_else
  • 2017年04月12日 23:43
  • 1315

【Unet】Unity使用实用Syncvar 简单同步变量

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Net...
  • ldy597321444
  • ldy597321444
  • 2017年04月20日 13:05
  • 1898

【UNET自学日志】Part6 更有效率的旋转同步

对于旋转的同步,其主要的思路和运动的同步是一样的,设置一个List,每次角度变化的时候将这个变化的数值存入List当中,当物体旋转的角度和List的第一个数值足够接近的时候,删除List中的第一个数值...
  • sinat_24994943
  • sinat_24994943
  • 2016年04月19日 16:13
  • 885

【UNET自学日志】Part5 解决延迟产生的画面不流畅问题

感觉这个部分是非常需要并且非常有趣的,然而还有一些并不是特别理解的地方,故在此文章中,若出现不大理解的地方我会说明,同样希望大神可以帮我指出,也欢迎和我一样的新手和我共同钻研学习。...
  • sinat_24994943
  • sinat_24994943
  • 2016年04月17日 21:40
  • 1499

【UNET自学日志】Part1 UNET的设置与运动同步

以一个FPS游戏为例 1、新建一个Plane作为游戏场景内的地板。 2、导入Character包,在场景中添加FirstPersonCharacter中的Prefabs——FPSController,...
  • sinat_24994943
  • sinat_24994943
  • 2016年03月23日 14:25
  • 4385

【UNET自学日志】Part4 模拟延迟

之前我们所做的联机所连接的都是我们自己的本地网络(localhost),然而在实际的网络游戏中,根据每个玩家的网络的不同,必定会出现延迟,或高或低,如若出现了延迟,那么动画的流畅度肯定又是不一样的感觉...
  • sinat_24994943
  • sinat_24994943
  • 2016年04月16日 20:59
  • 909

Unity5网络模块UNet介绍

转自游戏蛮牛 前段时间,研究了一下UNet,经过项目实践,大致整理了下遇到的问题。   源码Bitbucket : (https://bitbucket.org/-Technologies/n...
  • LRanger_1010
  • LRanger_1010
  • 2016年10月26日 00:08
  • 527

复习UNITY3D网络模块UNET

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine....
  • SpiderLilies_Liu
  • SpiderLilies_Liu
  • 2017年05月04日 17:56
  • 89

[Unity5.1]同步动画UNET

这一次,我们将同步动画〜 UNET第21部分 - 网络动画 [目标]以同步动画! ①下载 首先,下载资产〜这个时候资产被称为“最大的...
  • qq949261770
  • qq949261770
  • 2015年09月01日 06:34
  • 1942
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习UNET的记录一--SyncVar的使用
举报原因:
原因补充:

(最多只允许输入30个字)