Unity3d 如何为加入的其他玩家更改颜色?

Unity3d 如何为加入的其他玩家更改颜色?,unity3d,Unity3d,我有坦克模型。我用统一的材料给这个模型上色。 例如,如果是第二个玩家模型,如何更改材质颜色 根据您的情况,有很多不同的方法可以做到这一点 1.如果您最多只允许2或4名玩家,那么您可以为每个玩家创建不同的坦克预制(使用不同的颜色材料),然后在每个玩家加入游戏时为他们实例化相应的坦克。这是最简单的解决方案,也是解决这个问题的好方法 2.如果您想在不创建更多材质或预制件的情况下更改坦克的颜色,则可以在运行时使用材质属性块更改新玩家坦克上每个材质的颜色。查看并获取更多信息。使用文章中的材质属性块解决方案

我有坦克模型。我用统一的材料给这个模型上色。 例如,如果是第二个玩家模型,如何更改材质颜色


根据您的情况,有很多不同的方法可以做到这一点

1.如果您最多只允许2或4名玩家,那么您可以为每个玩家创建不同的坦克预制(使用不同的颜色材料),然后在每个玩家加入游戏时为他们实例化相应的坦克。这是最简单的解决方案,也是解决这个问题的好方法

2.如果您想在不创建更多材质或预制件的情况下更改坦克的颜色,则可以在运行时使用材质属性块更改新玩家坦克上每个材质的颜色。查看并获取更多信息。使用文章中的材质属性块解决方案需要创建内置着色器的副本并对其进行编辑,但只需添加一行代码。如果您以前没有使用过着色器,那么它们可能看起来很吓人,但也不太糟糕

由于您将在运行时提供颜色,因此您可以在脚本中为每个玩家坦克材质使用全局颜色字段,也可以使用玩家索引生成颜色色调(推荐-下面的示例)。使用玩家索引(
playerIndex
=1,2…
maxPlayers
)将允许您拥有任意数量的不同坦克类型,您可以使用以下代码获得颜色(然后将其提供给材质属性块的颜色属性)

有关生成此类颜色的更多信息,请查看文档。您可以使用HSL颜色选择器中的色调值来选择一个
startHue
(这将是播放器1的颜色)。

var c = Color.HSVToRGB(startHue + (playerIndex / (float)maxPlayers), 1, 1);