c# - 如何在 AssetDatabase.FindAssets() 中使用正则表达式?
问题描述
我尝试使用 AssetDatabase.FindAssets() 在特定文件中查找 scriptableObject,我正在寻找一个名为 Resource 的文件。我想在我的资产文件夹中分散的所有资源文件中获取每个可编写脚本的对象。
例如 :
资产/GameAssets/FolderA/Resource/AssetA.asset
Assets/GameAssets/FolderB/Resource/AssetB.asset
资产/GameAssets/FolderC/Resource/AssetC.asset
资产/GameAssets/FolderD/Resource/AssetD.asset
这是我使用的当前代码
AssetDatabase.FindAssets("t:ScriptableObject", new[] { "Assets/GameAssets" });
它会返回不需要的 scriptableObjects。然后我尝试添加正则表达式
AssetDatabase.FindAssets("t:ScriptableObject", new[] { "Assets/GameAssets/*/Resource/AssetD.asset" });
ofc 它失败了,我没有经验,需要帮助。
解决方案
我想你可以使用Directory.GetDirectories
like
var resourceFolders = Directory.GetDirectories(Path.Combine(Application.assetPath,"Games sets"), "Resource", SearchOption.AllDirectories);
它递归地查找目录中调用Resource
的Assets/GameAssets
目录的所有路径。
然后做
var assets = new List<string>();
foreach(var folder in resourceFolders)
{
assets.AdsRange(AssetDatabass.FindAssets("t:ScriptableObject", folder);
}
为了对这些Resource
目录中的每一个进行单独的搜索。
推荐阅读
- google-sheets - 如何根据日期范围获取唯一数量的客户?
- javascript - 这个 ES6 箭头功能代码块是做什么的?
- javascript - JS - 每次创建类时都会重新定义类成员函数吗?
- java - Javac 编译总是必须从包的顶部开始吗?(将包的路径传递给 javac ?)
- c++ - 使用 OpenCV 和 C++ 从图像中提取每个 HSV 值
- c# - 如何正确配置身份验证以在 ASP.NET Core 2.0 中使用外部 Restful API?
- html - 没有控件的移动视频不起作用
- marklogic - 没有单词限制的建议
- google-maps - 数据未从 KML 文件中显示
- kotlin - 将枚举成员转换为相应的文本