我正在使用此着色器:http://wiki.unity3d.com/index.php/Silhouette-Outlined_Diffuse用于我的项目。我注意到了一些问题,并且想知道是否有其他人遇到过这个问题。
首先,如果我手动将着色器添加到预制件中,它可以正常工作。问题是当我尝试在我的C#脚本中添加它时。对于Build和Debug版本
我的游戏是多人游戏。我用来添加着色器的脚本在统一运行时工作正常。但是,当它在独立应用程序中运行时,它不会。预制件不是概述,而是粉红色(就像当您尝试添加未找到/删除的材料时)。
此外,我的代码应该只允许特定的玩家查看大纲。并非所有球员。但是,出于某种原因,有些人看到它(如果它在Unity中,他们看到它是正确的,如果没有,他们看到粉红色),而其他人则没有。我的游戏只能有4名玩家。
这是我的代码:
private void playerDrawsTile(String playerName, ISFSArray cardsDealt, int drawPosition, string wall)
{
Debug.Log("User " + playerName + " can draw tiles " + drawPosition);
//if the player is the current players turn show the outline. //otherwise show nothing
if(sfs.MySelf.Id == getPlayer(playerName).Id)
{
GameObject[] getWall = new GameObject[36];
//get the array of prefabs that contain the objects I want to
//add the shader to
switch (wall)
{
case "EAST":
getWall = controller.WallEast;
break;
case "SOUTH":
getWall = controller.WallSouth;
break;
case "WEST":
getWall = controller.WallWest;
break;
case "NORTH":
getWall = controller.WallNorth;
break;
default:
break;
}
GameObject tile1 = GameObject.Find(getWall[drawPosition].name);
GameObject tile2 = GameObject.Find(getWall[drawPosition + 18].name);
Shader shader = Shader.Find("Outlined/Silhouetted Diffuse");
Renderer rend = tile1.GetComponent<Renderer>();
rend.material.shader = shader;
rend = tile2.GetComponent<Renderer>();
rend.material.shader = shader;
}
}
这是在C#中完成的。着色器文件保存在Assets-&gt; projectFolder-&gt; Shaders文件夹中。我在Silhouette-Outline漫反射页面中使用第一个着色器(未撞击或其他)
感谢
答案 0 :(得分:0)
经过一番搜索,我发现这个帖子有助于: http://answers.unity3d.com/questions/160922/shader-not-working-in-build.html
这很容易。我刚刚创建了一个Shader类型的公共变量。然后将我的着色器放到该变量上并根据需要调用它。