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

惠州网站建设服务商免费网站seo

惠州网站建设服务商,免费网站seo,网站模板管理,织梦网站默认密码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.mnyf.cn/news/32786.html

相关文章:

  • 周杰伦做的广告网站企业网络营销策略
  • 有没有网站可以做地图免费外国网站浏览器
  • 做论坛网站怎么赚钱制作网页一般多少钱
  • 政府门户网站设计营销软文是什么
  • JAVA网站开发二次框架如何让百度收录自己的网站
  • 乌鲁木齐市疫情发布会最新消息seo综合查询怎么关闭
  • 博客型网站建设制作网站的步骤
  • 长沙seo袁飞seo优化方法网站快速排名推广渠道
  • wordpress图片显示不出来关键词优化公司哪家推广
  • 鹰潭网站建设公司广州网站优化排名
  • 做一个主题的网页代码seo排名赚app是真的吗
  • 龙之向导外贸官方网站在线h5免费制作网站
  • 长沙手机网站建设哪些网站推广优化的原因
  • 自己的网站怎么做seo优化百度涨
  • 做折扣的网站有哪些关键词排名查询工具有哪些
  • 茶叶网站建设网站推广软件下载
  • 做塑料的外贸网站有哪些手机怎么做网站
  • 网站的icp备案信息是什么口碑营销策略有哪些
  • 有了网站后台后怎么做seo优化推广接单平台
  • 有哪些动态网站seo整站优化方案
  • 漳州专业网站建设价格启动互联全网营销推广
  • 中企建设网站谷歌商店paypal官网
  • 管理网络的网站足球世界排名国家
  • 电影网站模板html人工智能培训机构排名
  • 哪里能注册免费的网站做seo要投入什么
  • 网站系统开发报价单李守洪
  • 怎么看网站是否安装百度商桥代码企业宣传方式
  • 2008iis网站建设安卓手机性能优化软件
  • 汕头高端网站开发潍坊关键词优化软件
  • 原创音乐网站源码seo优化网站推广专员招聘