【发布时间】:2016-09-11 00:16:04
【问题描述】:
我正在尝试从我的服务器脚本同步我的立方体的颜色。我有网络转换和网络身份组件,转换同步效果很好,现在我需要同步颜色。我需要像 Network Material 组件这样的东西,或者我应该怎么做?谢谢 :) (我希望你明白我的意思,对不起英语。)
【问题讨论】:
标签: c# networking unity3d
我正在尝试从我的服务器脚本同步我的立方体的颜色。我有网络转换和网络身份组件,转换同步效果很好,现在我需要同步颜色。我需要像 Network Material 组件这样的东西,或者我应该怎么做?谢谢 :) (我希望你明白我的意思,对不起英语。)
【问题讨论】:
标签: c# networking unity3d
您可以使用 SyncVar 属性同步值:
[SyncVar]
Color myColor;
这将使更改在客户端和服务器上保持同步。但这只是你的颜色类型类中的一个字段,它实际上并不会改变你的渲染颜色。
您可以在 Update 回调中将渲染的颜色更改为 myColor 值,但即使颜色没有变化,它也会更新它。
最好的方法是使用钩子:
[SyncVar (hook = "OnColorChanged")]
Color myColor;
这将在每次颜色更新时调用“OnColorChanged”函数。
这样的事情应该可以工作(如果你正在使用 SpriteRenders):
[SyncVar (hook = "OnColorChanged")]
Color myColor;
void OnColorChanged(Color value)
{
myColor = value;
GetComponent<SpriteRenderer>().color = myColor;
}
【讨论】:
public Class myClass : MonoBehaviour 更改为public Class myClass : NetworkBehaviour