Silhouette-Outlined Diffuse无法正常工作

时间:2017-02-19 16:32:56

标签: c# unity3d shader

我正在使用此着色器:http://wiki.unity3d.com/index.php/Silhouette-Outlined_Diffuse用于我的项目。我注意到了一些问题,并且想知道是否有其他人遇到过这个问题。

  1. 首先,如果我手动将着色器添加到预制件中,它可以正常工作。问题是当我尝试在我的C#脚本中添加它时。对于Build和Debug版本

  2. 都是如此
  3. 我的游戏是多人游戏。我用来添加着色器的脚本在统一运行时工作正常。但是,当它在独立应用程序中运行时,它不会。预制件不是概述,而是粉红色(就像当您尝试添加未找到/删除的材料时)。

  4. 此外,我的代码应该只允许特定的玩家查看大纲。并非所有球员。但是,出于某种原因,有些人看到它(如果它在Unity中,他们看到它是正确的,如果没有,他们看到粉红色),而其他人则没有。我的游戏只能有4名玩家。

  5. 这是我的代码:

    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漫反射页面中使用第一个着色器(未撞击或其他)

    感谢

1 个答案:

答案 0 :(得分:0)

经过一番搜索,我发现这个帖子有助于: http://answers.unity3d.com/questions/160922/shader-not-working-in-build.html

这很容易。我刚刚创建了一个Shader类型的公共变量。然后将我的着色器放到该变量上并根据需要调用它。