我正在使用此着色器: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-> projectFolder-> Shaders文件夾中。我用的是第一着色器的剪影,大綱漫頁面(沒碰到或其他)
感謝
'name':按文件名(不帶擴展名)過濾資產。由空白分隔的詞被視爲單獨的名稱搜索。使用引號將多個單詞分組到單個搜索中。 https://docs.unity3d.com/ScriptReference/AssetDatabase.FindAssets.html – SotirisTsartsaris
我不知道這可能會有幫助嗎?如上所述,着色器腳本被發現並且工作正常,但僅適用於在Unity中運行的遊戲。這似乎表明Unity可以找到資產。它不適用於在自己的環境中運行的遊戲(即,當我運行構建文件時)。 – jason