从 Unity 中的资产加载 material
Load material from assets in Unity
在我的 Assets 文件夹中,我有一个名为 Material 的文件夹,我在其中存储了所有需要的 materials,Material 文件夹中的 materials 之一是Night_Sky
,我希望在游戏的某个时刻替换 day_sky
并将 Night_sky
设置为我的默认天空盒。我尝试了很多代码,所有代码都是 return 空对象,示例:
night = Resources.Load("Material", typeof(Material)) as Material;
或
night = Resources.Load("Material/Night_Sky.mat", typeof(Material)) as Material;
如何加载我的 Night_Sky
material,或者是否有更简单的方法将我的天空盒切换到 night_sky
谢谢分享
这将不起作用,因为 Resources.Load 要求您将对象放在 Resources 文件夹中。此信息也可以在 Unity Docs
中找到
为了使其正常工作,您需要在 Assets 文件夹中创建一个名为 Resources 的文件夹。之后,您可以将 Material 文件夹添加到其中。所以文件夹结构如下所示
Assets/Resources/Materials/Night_Sky.mat
此外,加载 material 的脚本看起来还不错。
如果您真的不想使用资源文件夹,您可以尝试使用 System.IO 文件夹搜索选项来获取 materials。但我建议您只使用内置资源功能。
但是,当您确实使用 Resources.Load()
时,您需要牢记一些注意事项。 path
区分大小写,并且还需要您添加文件扩展名。所以在上面的例子中,这将导致:
myMaterial = Resources.Load("Materials/Night_Sky.mat");
Unity 5.0 或 >
作为Nika Kasradze mentioned in the comments. In unity 5.0 or up extensions must be omitted. Making the correct unity5语法
myMaterial = Resources.Load("Materials/Night_Sky");
在我的 Assets 文件夹中,我有一个名为 Material 的文件夹,我在其中存储了所有需要的 materials,Material 文件夹中的 materials 之一是Night_Sky
,我希望在游戏的某个时刻替换 day_sky
并将 Night_sky
设置为我的默认天空盒。我尝试了很多代码,所有代码都是 return 空对象,示例:
night = Resources.Load("Material", typeof(Material)) as Material;
或
night = Resources.Load("Material/Night_Sky.mat", typeof(Material)) as Material;
如何加载我的 Night_Sky
material,或者是否有更简单的方法将我的天空盒切换到 night_sky
谢谢分享
这将不起作用,因为 Resources.Load 要求您将对象放在 Resources 文件夹中。此信息也可以在 Unity Docs
中找到为了使其正常工作,您需要在 Assets 文件夹中创建一个名为 Resources 的文件夹。之后,您可以将 Material 文件夹添加到其中。所以文件夹结构如下所示
Assets/Resources/Materials/Night_Sky.mat
此外,加载 material 的脚本看起来还不错。
如果您真的不想使用资源文件夹,您可以尝试使用 System.IO 文件夹搜索选项来获取 materials。但我建议您只使用内置资源功能。
但是,当您确实使用 Resources.Load()
时,您需要牢记一些注意事项。 path
区分大小写,并且还需要您添加文件扩展名。所以在上面的例子中,这将导致:
myMaterial = Resources.Load("Materials/Night_Sky.mat");
Unity 5.0 或 >
作为Nika Kasradze mentioned in the comments. In unity 5.0 or up extensions must be omitted. Making the correct unity5语法
myMaterial = Resources.Load("Materials/Night_Sky");