Чтобы использовать все возможности нашего сообщества, вам необходимо войти в ваш аккаунт
Создал : Administrator
Последнее обновление: 2014-06-19 17:01:34
Unity Critical Error: UnityException: Transform child out of bounds
UnityException: Transform child out of bounds
CarEditor.Refresh () (at Assets/Editor/CarEditor.cs:196)
CarEditor.OnInspectorGUI () (at Assets/Editor/CarEditor.cs:155)
UnityEditor.InspectorWindow.DrawEditor (UnityEditor.Editor editor, Int32 editorIndex, Boolean forceDirty, System.Boolean& showImportedObjectBarNext, UnityEngine.Rect& importedObjectBarRect, Boolean eyeDropperDirty) (at C:/BuildAgent/work/d63dfc6385190b60/Editor/Mono/Inspector/InspectorWindow.cs:1124)
UnityEditor.DockArea:OnGUI()

Эта ошибка возникает в том случае, когда вы пытаетесь обратиться к несуществующему чилду.
 
Для примера, у нас имеется 4 чилда, а следующий код будет их все удалять, так же данный код вызывает ошибку.
 
C#
public void Refresh()
 {
  int count=_myObject.transform.childCount;
  for (int i=0; i<count; i++)
  UnityEngine.Object.DestroyImmediate (_myObject.transform.GetChild (i).gameObject);
 
  CreateCarStructure ();
 
 }

Потому что, когда мы удаляем первые два чилда, всё будет ок, но как мы только попытаемся удалить 3-й чилд произойдет ошибка, из-за того не существует чилдас индексом 2, т.к. всего осталось 2 чилда, и индексы у них 0 и 1.
 
Решение проблемы, удалять чилды по формуле countOfChilds - currentChild.

История помощи в создании страницы:

Administrator - 2014:06:19 17:01:34
Комментарии