我在unity中有两个列表,第一个是List<GameObject> objList
,第二个是List<Animator> animList
。所以我需要链接GameObject列表中的第一个对象和Animator列表中的第一个动画,第二个对象和第二个动画等等。我该怎么做呢?
第一个列表的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;
并填充该列表,而不是单独的列表,因此您总是同时访问两个引用。
更简单的方法是创建一个具有这两个字段的类,并用这个自定义类创建一个列表。如果这不能发生,你没有"适当的内置"。除非你使用字典,否则你需要确保每次访问列表a中的第一个值时,你也会访问列表B中的第一个项