Единство. Есть ли способ связать объекты в списке с их конкретными анимациями, которые находятся в другом списке

#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