C# Unity 5网络颜色同步
我正在尝试从服务器脚本同步多维数据集的颜色。我有网络转换和网络标识组件,转换同步工作正常,现在我需要同步颜色。我需要像网络材料组件之类的东西,否则我应该怎么做?谢谢:)(我希望你明白我的意思,抱歉用英语。)你可以使用SyncVar属性同步值:C# Unity 5网络颜色同步,c#,networking,unity3d,C#,Networking,Unity3d,我正在尝试从服务器脚本同步多维数据集的颜色。我有网络转换和网络标识组件,转换同步工作正常,现在我需要同步颜色。我需要像网络材料组件之类的东西,否则我应该怎么做?谢谢:)(我希望你明白我的意思,抱歉用英语。)你可以使用SyncVar属性同步值: [SyncVar] Color myColor; 这将使更改在客户端和服务器上保持同步。但这只是颜色类型类中的一个字段,它实际上不会更改渲染的颜色 您可以在更新回调中将渲染的颜色更改为myColor值,但即使颜色没有更改,它也会进行更新 最好的方法是使用
[SyncVar]
Color myColor;
这将使更改在客户端和服务器上保持同步。但这只是颜色类型类中的一个字段,它实际上不会更改渲染的颜色
您可以在更新回调中将渲染的颜色更改为myColor
值,但即使颜色没有更改,它也会进行更新
最好的方法是使用钩子:
[SyncVar (hook = "OnColorChanged")]
Color myColor;
这将在每次更新颜色时调用“OnColorChanged”函数
类似的功能应该可以使用(如果您正在使用Spriterender):
[SyncVar(hook=“OnColorChanged”)]
色霉色;
无效颜色更改(颜色值)
{
myColor=值;
GetComponent().color=myColor;
}
感谢您的回答,因此我已将此代码添加到我的客户端和网络脚本中,但我现在收到了以下错误:UNetWeaver错误:script UnityEngine.Networking.ConnectClient使用[SyncVar]myColor,但不是networkbehavior。声明类时,它通常派生自monobhavior,但要使SyncVar发挥作用,它必须源自网络行为。将类声明从公共类myClass:MonoBehavior
更改为公共类myClass:NetworkBehavior
谢谢,将MonoBehavior更改为网络解决了错误。但是我的立方体没有改变它的颜色。我的代码:我提到的代码不应该在NetworkManager上,而是在分配给多维数据集的脚本中,它应该是一个网络标识。哦,我明白了。非常感谢你的帮助:)我会接受你的回答。
[SyncVar (hook = "OnColorChanged")]
Color myColor;
void OnColorChanged(Color value)
{
myColor = value;
GetComponent<SpriteRenderer>().color = myColor;
}