Unity3d 从统一的资源中加载材质
在我的资产文件夹中,我有一个名为Material的文件夹,我在其中存储了所有需要的材料,材料文件夹中的一个材料是Unity3d 从统一的资源中加载材质,unity3d,assets,unityscript,unity5,Unity3d,Assets,Unityscript,Unity5,在我的资产文件夹中,我有一个名为Material的文件夹,我在其中存储了所有需要的材料,材料文件夹中的一个材料是Night_Sky,我希望在游戏的某个时刻将其替换为day_Sky,并将Night_Sky设置为我的默认天空框。我尝试了许多代码,它们都返回空对象,例如: night = Resources.Load("Material", typeof(Material)) as Material; 或 如何加载我的Night_Sky资料,或者如果有更简单的方法将我的skybox切换到Night_
Night_Sky
,我希望在游戏的某个时刻将其替换为day_Sky
,并将Night_Sky
设置为我的默认天空框。我尝试了许多代码,它们都返回空对象,例如:
night = Resources.Load("Material", typeof(Material)) as Material;
或
如何加载我的
Night_Sky
资料,或者如果有更简单的方法将我的skybox切换到Night_Sky
感谢您共享它这将不能作为资源。加载要求您将对象放置在资源文件夹中。这些信息也可以在
要使其正常工作,您需要在Assets文件夹中创建一个名为Resources的文件夹。之后,您可以将材质文件夹添加到此文件夹。因此,文件夹结构如下所示
Assets/Resources/Materials/Night_Sky.mat
此外,加载材质的脚本看起来还不错
如果您确实不想使用resources文件夹,可以尝试使用System.IO文件夹搜索选项获取材料。但我建议您只使用内置资源功能
但是,当您使用Resources.Load()
时,需要记住几件事。路径
区分大小写,并要求您添加文件扩展名。因此,在上述示例中,这将导致:
myMaterial = Resources.Load("Materials/Night_Sky.mat");
Unity 5.0或>
如评论中所述。在unity 5.0或更高版本中,必须省略扩展。制作正确的语法
这对我不管用。我尝试了不同的方法,但加载材料从来都不起作用。还尝试了不同的目录以及有后缀和无后缀,但材料始终保持空。在inspector中的公共变量中设置材质没有问题。但我真的很想知道如何以编程方式加载它@亚历山大 如果它不工作,请确保以下事项区分大小写路径区分大小写<代码>铸造到类型,因为需要材料或类型(材料)<还需要添加代码>文件扩展名。要加载它,您必须从资源中强制转换路径,因此在上面的示例中,它将导致
myMaterial=Resources.load(“Materials/Night_Sky.mat”)代码>你也可以看看我可以通过最后一条评论获得材料的答案myMaterial=Resources.Load(“Materials/Night_Sky.mat”)代码>非常感谢。。
myMaterial = Resources.Load("Materials/Night_Sky.mat");
myMaterial = Resources.Load("Materials/Night_Sky");