C# 统一材料清单

C# 统一材料清单,c#,unity3d,3d,C#,Unity3d,3d,Unity项目中有一个文件夹,其中包含一些材质文件。这些材质可以指定给各种网格等。我想有一个这些材质的列表,并在Update()中循环该列表 是否有办法自动维护此列表?我将一个物料文件添加到文件夹,并将相应的物料对象添加到此列表?您需要循环浏览文件夹,找到扩展名为.mat的每个文件,然后手动加载 查看System.IO中的c#文件和目录类,获取材料文件的名称。 接下来通过Resources.load()加载它们 Resources.Load("Material/Night_Sky", typeo

Unity项目中有一个文件夹,其中包含一些材质文件。这些材质可以指定给各种网格等。我想有一个这些材质的列表,并在Update()中循环该列表


是否有办法自动维护此列表?我将一个物料文件添加到文件夹,并将相应的物料对象添加到此列表?

您需要循环浏览文件夹,找到扩展名为
.mat
的每个文件,然后手动加载

查看
System.IO
中的c#
文件
目录
类,获取材料文件的名称。 接下来通过
Resources.load()加载它们

Resources.Load("Material/Night_Sky", typeof(Material)) as Material;
编辑: 上述解决方案只能在编辑器中使用,因为您无法在构建中使用
System.IO
获取材质名称<代码>资源。加载
在构建中可以正常工作,但您需要材料的名称。 如注释
Resources中所述,LoadAll()
将完成这项工作。 此外,对于
Resources.Load()
Resources.LoadAll()
,您需要将所有要加载的材料放入
Resources
文件夹,即:

如果材料的路径为:
Assets\Resources\materials
,则需要使用:

Resources.LoadAll("Materials")
文档的有用链接:


您需要循环浏览文件夹,找到扩展名为
.mat
的每个文件,然后手动加载

查看
System.IO
中的c#
文件
目录
类,获取材料文件的名称。 接下来通过
Resources.load()加载它们

Resources.Load("Material/Night_Sky", typeof(Material)) as Material;
编辑: 上述解决方案只能在编辑器中使用,因为您无法在构建中使用
System.IO
获取材质名称<代码>资源。加载
在构建中可以正常工作,但您需要材料的名称。 如注释
Resources中所述,LoadAll()
将完成这项工作。 此外,对于
Resources.Load()
Resources.LoadAll()
,您需要将所有要加载的材料放入
Resources
文件夹,即:

如果材料的路径为:
Assets\Resources\materials
,则需要使用:

Resources.LoadAll("Materials")
文档的有用链接:


您想在编辑器模式还是运行时执行此操作?Umair的问题非常好,请回答。但是,如果您只想在运行时执行此操作,则可以创建材质数组,然后更改索引并将新材质指定给网格。我想在运行时使用此列表。您想在编辑器模式下执行此操作还是在运行时执行此操作?Umair的问题非常好,请回答。但是,如果您只想在运行时执行此操作,则可以创建材质数组,然后更改索引并将新材质指定给网格。我希望在运行时使用此列表。抱歉,我认为这仅在编辑器中有效。但如果您将所有材料保存在一个文件夹中,则可以使用Resources.LoadAll()。还有Resources.LoadAll()*被@Krajca 18secs:]击败)我想在运行时拥有这个列表。加载资源在构建中起作用。更多信息请看这个:这是问题的正确答案<代码>资源。加载在编辑器中工作,也在生成中工作。您需要修改此答案。大多数东西都错了。“查看System.IO中的c#File和Directory类以获取材料文件的名称。”System.IO与
资源无关。Load
不会与
资源一起工作。Load
。您还必须从代码中删除“.mat”。当您放置文件扩展名时,它将不起作用。您还应该在回答中输入OP必须将材料文件夹放在
Resources
文件夹中,该文件夹位于
Assets\Resources
中。对不起,我认为这只能在编辑器中使用。但如果您将所有材料保存在一个文件夹中,则可以使用Resources.LoadAll()。还有Resources.LoadAll()*被@Krajca 18secs:]击败)我想在运行时拥有这个列表。加载资源在构建中起作用。更多信息请看这个:这是问题的正确答案<代码>资源。加载在编辑器中工作,也在生成中工作。您需要修改此答案。大多数东西都错了。“查看System.IO中的c#File和Directory类以获取材料文件的名称。”System.IO与
资源无关。Load
不会与
资源一起工作。Load
。您还必须从代码中删除“.mat”。当您放置文件扩展名时,它将不起作用。您还应该在回答中输入OP必须将物料文件夹放在
Resources
文件夹中,该文件夹位于
Assets\Resources
中。