GameObject[] prefabs = (GameObject[])Resources.LoadAll("Assets/Animations/Test");
主要目标是获取所有预制件,并在Test
下有子文件夹的情况下进行递归。
答案 0 :(得分:1)
在资产/资源中创建目录动画/测试。
$usersTeamsResult = $getUsersTeams->fetchAll(PDO::FETCH_ASSOC);
$myArray = $usersTeamsResult[0];
$usersTeams = json_decode(array_shift($myArray), true);
它将在 Test 及其子文件夹中获取所有类型为 GameObject 的文件。
答案 1 :(得分:0)
Resourcess.LoadAll在Resources文件夹中寻找。如果要在资产中查找某些内容,则应使用AssetDatabase.FindAssets。
AssetDatabase.FindAssets("t:prefab", new string[] {"Assets/Animations/Test"});
如果您想过滤掉其他资产,还应该检查其docs。
答案 2 :(得分:0)
对于 Unity 编辑器端代码,为某事自动化编辑器脚本。 可能是这样的:
string[] guids = AssetDatabase.FindAssets( "t:Prefab" );
foreach( var guid in guids )
{
var path = AssetDatabase.GUIDToAssetPath( guid );
GameObject go = AssetDatabase.LoadAssetAtPath<GameObject>( path );
// For example: searching for broken prefab
// recursively go through all Transform(s) and check
// name.Contains( "Missing Prefab" )
// Or maybe find certain type of script using GetComponent API family
// Or maybe find a missing (broken) MonoBehaviour script using GameObjectUtility.GetMonoBehavioursWithMissingScriptCount
// etc
请注意,像上述方法一样迭代预制件有利于读取但不适用于保存,您将不得不通过另一个箍使其变脏,保存并刷新到磁盘等。
直接编辑“源资产”预制件的一种方法是使用 PrefabUtility API。
对于 2020.1+,请参阅 https://docs.unity3d.com/2020.1/Documentation/ScriptReference/PrefabUtility.EditPrefabContentsScope.html
老年人请参阅https://forum.unity.com/threads/how-do-i-edit-prefabs-from-scripts.685711/ (解决方案大约在中后期)