我在这里遇到了一个奇怪的问题:网格在运行时在编辑器中显示得很漂亮。但是:它没有显示在我的构建版本中
查看下面 2 个版本的附件屏幕截图:
构建版本与编辑器版本
另外,我想向您展示我为它编写的脚本会有所帮助..:
void GenerateGrid()
{
Color gridColor = Color.cyan;
Color borderColor = Color.black;
Collider floorCollider = floor.GetComponent<Collider>();
Vector3 foorSize = new Vector3(floorCollider.bounds.size.x, floorCollider.bounds.size.z);
for (int x = 0; x < gridImage.width; x++)
{
for (int y = 0; y < gridImage.height; y++)
{
if (x < borderSize || x > gridImage.width - borderSize || y < borderSize || y > gridImage.height - borderSize)
{
gridImage.SetPixel(x, y, new Color(borderColor.r, borderColor.g, borderColor.b, 50));
}
else gridImage.SetPixel(x, y, new Color(gridColor.r, gridColor.g, gridColor.b, 50));
}
gridImage.wrapMode = TextureWrapMode.Repeat;
gridImage.Apply();
}
floor.GetComponent<MeshRenderer>().material.SetTexture(1, gridImage);
floor.GetComponent<MeshRenderer>().material.SetTextureScale(1, new Vector2(floorCollider.bounds.size.x, floorCollider.bounds.size.z));
floor.GetComponent<MeshRenderer>().material.SetTextureOffset(1, new Vector2(.5f, .5f));
Debug.Log(floor.GetComponent<MeshRenderer>().material.GetTexture(1));
}
尝试floor.GetComponent<MeshRenderer>().material.SetTexture("_MainTex", gridImage);
.
如果你想使用SetTexture(int nameID, Texture value);
你应该使用Shader.PropertyToID
来获得nameID
。
着色器属性的每个名称(例如,_MainTex 或 _Color)都是 在 Unity 中分配了一个唯一的整数,该整数在 整个游戏。不同的数字不会相同 游戏运行或机器之间的运行,因此不要存储它们或发送 他们通过网络。