Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity 5网络颜色同步_C#_Networking_Unity3d - Fatal编程技术网

C# Unity 5网络颜色同步

C# Unity 5网络颜色同步,c#,networking,unity3d,C#,Networking,Unity3d,我正在尝试从服务器脚本同步多维数据集的颜色。我有网络转换和网络标识组件,转换同步工作正常,现在我需要同步颜色。我需要像网络材料组件之类的东西,否则我应该怎么做?谢谢:)(我希望你明白我的意思,抱歉用英语。)你可以使用SyncVar属性同步值: [SyncVar] Color myColor; 这将使更改在客户端和服务器上保持同步。但这只是颜色类型类中的一个字段,它实际上不会更改渲染的颜色 您可以在更新回调中将渲染的颜色更改为myColor值,但即使颜色没有更改,它也会进行更新 最好的方法是使用

我正在尝试从服务器脚本同步多维数据集的颜色。我有网络转换和网络标识组件,转换同步工作正常,现在我需要同步颜色。我需要像网络材料组件之类的东西,否则我应该怎么做?谢谢:)(我希望你明白我的意思,抱歉用英语。)

你可以使用SyncVar属性同步值:

[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;
}