2016-12-25 78 views
1

我想更改默认的天空盒材质,因此我创建了这一行...之后,我只看到蓝色...我的错误是什么?以编程方式更改Skybox材质(c#)

的材料是关于资产文件夹中客场

Material levelMat = Resources.Load(Application.dataPath + "/testeVR.mat", typeof(Material)) as Material; 
RenderSettings.skybox = levelMat; 
+0

它是否具有高光/质感? –

回答

1

的材料是关于资产文件夹中客场

不能将材料放置在资源文件夹如果你正在加载它Resources.Load

之后,我只看到蓝色

levelMat变量是null。当您申请Skybox的材料为空时,您会变蓝并且您可以在其后添加Debug.Log(levelMat);来证明这一点。

Material levelMat = Resources.Load(Application.dataPath + “/testeVR.mat”,typeof(Material))as Material;

你也不能这样做。不应在Resources.Load函数的路径参数中使用Application.dataPath

很少有东西从你的代码的理解:

Resources.Load需要一个名为的特殊文件夹资源。在资产目录中创建一个名为Resources的文件夹,然后在其中放置testeVR.mat

。你做把文件扩展名的Resources.Load功能的路径参数。所以,testeVR.mat实际上应该是testeVR没有“.mat”。

只需创建一个名为资源资产文件夹然后将testeVR材料这个地方里面的文件夹。它应该看起来像这样:Assets/Resources/testeVR.mat。下面的代码应该用来加载它。

Material levelMat = Resources.Load("testeVR", typeof(Material)) as Material; 

现在,让我们说你有一个名为“”这是在资源文件夹中的另一个文件夹。你会使用类似如下:

Material levelMat = Resources.Load("Mats/testeVR", typeof(Material)) as Material; 
+0

谢谢你,这个作品!完善。很好的解释! –

+0

不客气! – Programmer

0

刚刚创造物质的公共变量,并把你想成为负载材料在运行时,或者如果你想通过一些功能的使用本

RenderSetting.sky = skyboxMat; 

加载它skyboxMat存储将其拖动到一体的材质,然后它变成您的天空盒的一部分

public Material skyboxMat; 
voidstart(){ RenderSetting.skybox = skyboxMat;}