#c# #unity3d
Вопрос:
У меня есть два списка в единстве: первый-это List<GameObject> objList
, второй-это List<Animator> animList
. Поэтому мне нужно как-то связать первый объект из списка игровых объектов с первой анимацией из списка аниматоров, второй со второй и так далее. Как я могу это сделать?
Комментарии:
1. Почему у вас нет пользовательского сценария, который объединяет ваш игровой объект и соответствующий аниматор, а затем содержит список этого самого пользовательского сценария?
Ответ №1:
Ну, являются GameObject
ли буквы s в первом списке одинаковыми, как только Animator
компоненты присоединены?
В этом случае вам действительно нужна только animList
ссылка, и всякий раз, когда вы получаете доступ к элементу, у вас все равно уже есть Animator.gameObject
ссылка.
var obj = animList[0].gameObject;
другой способ также был бы возможен, хотя, конечно, немного дороже, если нигде не кэшироваться
var anim = objList[0].GetComponent<Animator>();
здесь у вас может быть больше гибкости с кораблем отношений, например, с помощью GetComponentInChildren
, если вы знаете, что он находится не точно на этом объекте, а на дочернем.
Иначе у меня был бы просто урок
[Serializable]
public class AnimatorObjectPair
{
public Animator animator;
public GameObject gameObject;
}
и затем храните только список
public List<AnimatorObjectPair> animatorObjectPairs;
и заполните этот список вместо отдельных списков, чтобы вы всегда получали доступ к обеим ссылкам вместе.
Комментарии:
1. Спасибо за помощь
Ответ №2:
Самый простой способ-создать класс, содержащий оба поля, и составить список с помощью этого пользовательского класса. Если этого не может произойти, у вас нет «правильного встроенного» способа связать одно с другим, если вы не используете словарь, вам нужно будет убедиться, что каждый раз, когда вы обращаетесь к своему первому значению в списке A, вы также будете обращаться к первому элементу в списке B
Комментарии:
1. «вам нужно будет убедиться, что каждый раз, когда вы обращаетесь к своему первому значению в списке A, вы также будете обращаться к первому элементу в списке B» … и убедитесь, что они синхронизированы (заказ, товары и т.д.).
2. Да, @ChiefTwoPencils прав, на самом деле это не очень хороший подход, трудно гарантировать эту синхронизацию, настоятельно рекомендую индивидуальный способ с обоими fied