当前位置: 首页 > news >正文

大连网站建设兼职电商大数据查询平台

大连网站建设兼职,电商大数据查询平台,网站 打赏功能,中信建设有限责任公司龙芳Netcode升级到1.2.0网络变量的变化1 概述2 继承网络变量 NetworkVariable,派生类构造出错的问题2.1 代码描述2.2 问题记录2.3 解决办法:使用 NetworkVariable 即可3 网络变量 NetworkVariable 类的版本差异比较3.1 差异说明3.2 [1.0.2]版本的网络变量3.3…

Netcode升级到1.2.0网络变量的变化

    • 1 概述
    • 2 继承网络变量 NetworkVariable,派生类构造出错的问题
      • 2.1 代码描述
      • 2.2 问题记录
      • 2.3 解决办法:使用 NetworkVariable 即可
    • 3 网络变量 NetworkVariable 类的版本差异比较
      • 3.1 差异说明
      • 3.2 [1.0.2]版本的网络变量
      • 3.3 [1.2.0]版本的网络变量

1 概述

最近工程升级到Netcode For Gameobject 1.2.0版本
运行会出现部分报错,查看原因后发现是网络变量模块构造方法出现的问题

2 继承网络变量 NetworkVariable,派生类构造出错的问题

2.1 代码描述

1.1.0+版本 标记以下类为过时】
【1.0.2-版本 以下类可用】
/// <summary>
/// 网络变量 - 基类【重写】
/// </summary>
/// 
/// <remarks>
/// <list type="number">
/// <item> 加入构造函数,可以new新元素加入链表</item>
/// <item>网络变量可以用作静态字段,但是RPC不可以</item>
/// </list>/// </remarks>
[Serializable]
public class NetVar<T> : NetworkVariable<T> where T : unmanaged
{public NetVar(T value = default,NetworkVariableReadPermission readPerm = DefaultReadPerm,NetworkVariableWritePermission writePerm = DefaultWritePerm) : 
base(value, readPerm, writePerm){Value = value;}
}[Obsolete("1.0.2-版本可用,1.1+版本使用-NetworkVariable")]
[Serializable] public class NetVar_Int : NetVar<int>
{public NetVar_Int(int value = 0,NetworkVariableReadPermission readPerm = DefaultReadPerm,NetworkVariableWritePermission writePerm = DefaultWritePerm) : base(value, readPerm, writePerm){Value = value;}
}

2.2 问题记录

1 自己定义的类继承网络变量【NetworkVariable】
1.1使用自定义的类,构造时会直接报错,新版本的网络变量内部有改动

NetVar<int> nv_hp = new NetVar<int>();  **[1.0版本以前可用]**

2.3 解决办法:使用 NetworkVariable 即可

NetworkVariable<int> nv_hp = new NetworkVariable<int>(); [1.11.2版本可用]

3 网络变量 NetworkVariable 类的版本差异比较

3.1 差异说明

显著的变化在T Value赋值的过程,和对T的限定,变得更加安全
比较值得方法不一样,但是均在值比较之后发生变化才赋值,无变化不触发。

3.2 [1.0.2]版本的网络变量

using System;
using System.Runtime.CompilerServices;
using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;namespace Unity.Netcode
{[Serializable]public class NetworkVariable<T> : NetworkVariableBase where T : unmanaged{public delegate void OnValueChangedDelegate(T previousValue, T newValue);public OnValueChangedDelegate OnValueChanged;[SerializeField]private protected T m_InternalValue;public virtual T Value{get{return m_InternalValue;}set{if (!ValueEquals(ref m_InternalValue, ref value)){if ((bool)m_NetworkBehaviour && !CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)){throw new InvalidOperationException("Client is not allowed to write to this NetworkVariable");}Set(value);}}}public NetworkVariable(T value = default(T), NetworkVariableReadPermission readPerm = NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission writePerm = NetworkVariableWritePermission.Server): base(readPerm, writePerm){m_InternalValue = value;}[MethodImpl(MethodImplOptions.AggressiveInlining)]private unsafe static bool ValueEquals(ref T a, ref T b){void* ptr = UnsafeUtility.AddressOf(ref a);void* ptr2 = UnsafeUtility.AddressOf(ref b);return UnsafeUtility.MemCmp(ptr, ptr2, sizeof(T)) == 0;}private protected void Set(T value){SetDirty(isDirty: true);T internalValue = m_InternalValue;m_InternalValue = value;OnValueChanged?.Invoke(internalValue, m_InternalValue);}public override void WriteDelta(FastBufferWriter writer){WriteField(writer);}public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta){T internalValue = m_InternalValue;NetworkVariableSerialization<T>.Read(reader, out m_InternalValue);if (keepDirtyDelta){SetDirty(isDirty: true);}OnValueChanged?.Invoke(internalValue, m_InternalValue);}public override void ReadField(FastBufferReader reader){NetworkVariableSerialization<T>.Read(reader, out m_InternalValue);}public override void WriteField(FastBufferWriter writer){NetworkVariableSerialization<T>.Write(writer, ref m_InternalValue);}}
}

3.3 [1.2.0]版本的网络变量

using System;
using UnityEngine;namespace Unity.Netcode
{[Serializable]public class NetworkVariable<T> : NetworkVariableBase{public delegate void OnValueChangedDelegate(T previousValue, T newValue);public OnValueChangedDelegate OnValueChanged;[SerializeField]private protected T m_InternalValue;public virtual T Value{get{return m_InternalValue;}set{if (!NetworkVariableSerialization<T>.AreEqual(ref m_InternalValue, ref value)){if ((bool)m_NetworkBehaviour && !CanClientWrite(m_NetworkBehaviour.NetworkManager.LocalClientId)){throw new InvalidOperationException("Client is not allowed to write to this NetworkVariable");}Set(value);}}}public NetworkVariable(T value = default(T), NetworkVariableReadPermission readPerm = NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission writePerm = NetworkVariableWritePermission.Server): base(readPerm, writePerm){m_InternalValue = value;}private protected void Set(T value){SetDirty(isDirty: true);T internalValue = m_InternalValue;m_InternalValue = value;OnValueChanged?.Invoke(internalValue, m_InternalValue);}public override void WriteDelta(FastBufferWriter writer){WriteField(writer);}public override void ReadDelta(FastBufferReader reader, bool keepDirtyDelta){T internalValue = m_InternalValue;NetworkVariableSerialization<T>.Read(reader, ref m_InternalValue);if (keepDirtyDelta){SetDirty(isDirty: true);}OnValueChanged?.Invoke(internalValue, m_InternalValue);}public override void ReadField(FastBufferReader reader){NetworkVariableSerialization<T>.Read(reader, ref m_InternalValue);}public override void WriteField(FastBufferWriter writer){NetworkVariableSerialization<T>.Write(writer, ref m_InternalValue);}}
}
http://www.mmbaike.com/news/95121.html

相关文章:

  • 外贸产品开发网站google首页
  • 桂阳网站制作公司百度的相关搜索
  • 日本做头像的网站百度营销app
  • ubuntu 16.04 wordpress河北seo推广
  • 区块链插件wordpress百度工具seo
  • 重庆公司章程怎么下载长沙网站se0推广优化公司
  • 网站建设与网页制作教程长沙关键词优化公司电话
  • 抽奖的网站怎么做南宁百度seo推广
  • wap网站还有能打开的吗常见的营销型网站
  • 互联网博客网站合肥品牌seo
  • 如何租用服务器做网站广州网页制作
  • 网站建设发展的前景外贸网站推广
  • 汕头网页网站制作网店推广联盟
  • 做网站备案成功后怎么办关键词热度分析工具
  • 大连网站制作代理价格网站seo策划方案案例分析
  • 邯郸市做网站第一站长网
  • 做网站设计需要哪些知识广州市疫情最新情况
  • 摄影作品百度seo不正当竞争秒收
  • 科讯cms网站管理系统kesioncms免费下载百度app最新版本
  • 平台app如何推广以下属于网站seo的内容是
  • 手机网站在线制作网站关键词排名
  • 沧州好的做网站的公司友情链接论坛
  • 哪些网站是做批发的网站页面排名优化
  • 公司用自己机房做网站备案厦门网站外包
  • ui网站界面设计百度sem是什么
  • 人力资源网站建设网站制作公司
  • 公司外贸网站建设温州seo网站建设
  • 品牌建设成效手机网站优化排名
  • 做图片能去哪些网站吗企业网上的推广
  • 专门做旅游保险的网站悟空建站seo服务