每个人都有自己的知识体系。
Toggle navigation
Home
随笔
C#/.Net
树莓派 / Raspberry
皓月汉化组
Beego
Golang
OxideMod
apache
haproxy
windows
Java
Objective-C
日语/罗马音歌词/日语常识
MongoDB
python
电学
公告
Minecraft服务器-公告
NanoPi
C4D (CINEMA 4D)
生活
推流/m3u8/rtmp/rtsp
Unity3d
ffmpeg
数据结构
区块链
tarui
UnityForPSVita
About Me
Archives
Tags
一个简单的Unity Mirror数据同步范例
2022-05-19 11:32:19
1024
0
0
akiragatsu
我写一个简单明了的范例 比如我们要同步一个V3类型的数据, 数据来源:客户端操作 目标:同步所有客户端的 Vector3 V3FromNetwork 变量值 ##流程为 本地客户端客户端(isLocalPlayer为true)进行操作 ↓↓↓ 调用[Command]修饰的方法SetTestV3,(SetTestV3就具备了往服务器上报的特性) ↓↓↓ 服务器执行SetTestV3函数内容 ↓↓↓ 服务器修改TestV3值时,由于具备标识[SyncVar(hook = nameof(ChangeTestV3))],通知所有客户端的该对象脚本中调用ChangeTestV3 ↓↓↓ 客户端调用ChangeTestV3,最终成功修改到值。 代码如下 using UnityEngine; using Mirror; public class Player : NetworkBehaviour { void Update() { if (!isLocalPlayer) return;//只操作本地客户端 Vector3 V3SendData = new Vector3(Input.GetAxis("Vertical") * Time.deltaTime, 0, Input.GetAxis("Horizontal") * Time.deltaTime); SetTestV3(V3SendData); } [Command]//客户端上行标识 public void SetTestV3(Vector3 v) { //服务端执行内容 TestV3 = v; } [SyncVar(hook = nameof(ChangeTestV3))]//服务端修改触发客户端调用hook函数 public Vector3 TestV3 = Vector3.zero; public void ChangeTestV3(Vector3 oldv, Vector3 newc) { //客户端执行内容 V3FromNetwork = newc; } //要修改的目标值 public Vector3 V3FromNetwork = Vector3.zero; }
Pre:
通过系统软链接 转移unity 缓存路径位置
Next:
Unity Mirrot 基础机制:Command,ClientRpc,TargetRpc
0
likes
1024
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.