从Unity中的资源加载材料

时间:2015-01-21 11:26:27

标签: unity3d assets unityscript material

在我的Assets文件夹中,我有一个名为Material的文件夹,我存储了所有需要的材料,Material文件夹中的一个材料是Night_Sky,我希望在游戏的某个时刻替换{ {1}}并将day_sky设置为我的默认Skybox。我尝试了很多代码,所有代码都返回null对象,例如:

Night_sky

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

如何加载night = Resources.Load("Material/Night_Sky.mat", typeof(Material)) as Material; 素材,或者如果有更简单的方法将天空盒切换为Night_Sky,感谢您分享

1 个答案:

答案 0 :(得分:8)

这不起作用,因为Resources.Load要求您将对象放在Resources文件夹中。此信息也可以在Unity Docs

中找到

为了使其正常工作,您需要在Assets文件夹中创建名为Resources的文件夹。之后,您可以将Material文件夹添加到此文件夹中。所以文件夹结构看起来如下

Assets/Resources/Materials/Night_Sky.mat

更多加载材料的脚本看起来很好。

如果您确实不想使用资源文件夹,则可以尝试使用System.IO文件夹搜索选项获取材料。但我建议你只使用在Resources函数中构建。

但是,当您使用Resources.Load()时,您需要记住一些事项。 path区分大小写,并且还要求您添加文件扩展名。因此,在上面的示例中,这将导致:

myMaterial = Resources.Load("Materials/Night_Sky.mat"); 

Unity 5.0或>

评论中提及的Nika Kasradze。在unity 5.0或更高版本中必须省略扩展名。制作正确的语法

myMaterial = Resources.Load("Materials/Night_Sky");