【发布时间】:2019-03-20 07:53:51
【问题描述】:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class GameObjectInfo : MonoBehaviour
{
[System.Serializable]
public class GameObjectstInfo
{
public GameObject parent;
public int childrenCount;
public List<Transform> children = new List<Transform>();
}
public string gameObjectsInfo = "";
public GameObjectstInfo[] objectsinfo;
private bool searching = false;
// Start is called before the first frame update
void Start()
{
Search();
}
private void Update()
{
}
public void Search()
{
if (gameObjectsInfo != "")
{
var foundObjects = FindGameObjectsWithName(gameObjectsInfo);
objectsinfo = new GameObjectstInfo[foundObjects.Length];
for (int i = 0; i < foundObjects.Length; i++)
{
objectsinfo[i] = new GameObjectstInfo();
objectsinfo[i].parent = foundObjects[i];
foreach (Transform child in foundObjects[i].transform)
{
objectsinfo[i].childrenCount += 1;
objectsinfo[i].children.Add(child);
}
}
}
}
GameObject[] FindGameObjectsWithName(string nameIt)
{
int it = 0;
GameObject[] objArr;
bool b = false;
while (!b)
{
if (GameObject.Find(nameIt))
{
GameObject.Find(nameIt).name = nameIt + it;
it++;
}
else
{
b = true;
}
}
objArr = new GameObject[it];
while (it > 0)
{
it--;
objArr[it] = GameObject.Find(nameIt + it);
objArr[it].name = nameIt;
}
return objArr;
}
}
我只想在字符串 var gameObjectsInfo 不为空的情况下调用Search(); 进行一次搜索,并且如果用户更改了 var gameObjectsInfo 中的字符串,则每次都进行新的搜索。但如果字符串发生变化,每次搜索和新搜索。
主要目标是能够在更新内或使用按钮进行实时搜索。按钮部分工作正常,但我希望能够在更新中实时搜索。
按钮脚本:
using UnityEngine;
using System.Collections;
using UnityEditor;
[CustomEditor(typeof(GameObjectInfo))]
public class GameObjectInfoButton : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
GameObjectInfo myScript = (GameObjectInfo)target;
if (GUILayout.Button("Search"))
{
myScript.Search();
}
}
}
【问题讨论】: