我们知道在OnValidate中创建游戏物体会发出警告,删除游戏物体会报错。
所以我们使用协程,将开始动作的信号放在OnValidate中,将动作的执行放在帧结尾。
参考代码如下:
using System.Collections;
using UnityEngine;
public class VerticalList : MonoBehaviour
{
#if UNITY_EDITOR
[SerializeField]
private int _childrenAmount = 0;
void OnValidate()
{
_childrenAmount = Mathf.Max(_childrenAmount, 0);
StartCoroutine(KeepChildrenAmount());
}
IEnumerator KeepChildrenAmount()
{
yield return new WaitForEndOfFrame();
for (int i = transform.childCount - 1; i >= _childrenAmount; --i)
DestroyImmediate(transform.GetChild(i).gameObject);
while (transform.childCount < _childrenAmount)
{
GameObject obj = new();
obj.transform.parent = transform;
}
}
#endif
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 【unity】编辑器扩展——在OnValidate中创建、删除游戏物体
发表评论 取消回复