C# System.Array.IndexOf返回值-1
我放了一个截图,可以告诉你一切C# System.Array.IndexOf返回值-1,c#,unity3d,system.array,C#,Unity3d,System.array,我放了一个截图,可以告诉你一切 private Transform[] hiddenObjects; void Start() { leftImageRandom = new Randomizer(0, LeftImageSequence.transform.childCount - 1, true); DoStart(); } private void DoStart() { leftImageIndex = leftImageRandom.getRandom(
private Transform[] hiddenObjects;
void Start()
{
leftImageRandom = new Randomizer(0, LeftImageSequence.transform.childCount - 1, true);
DoStart();
}
private void DoStart()
{
leftImageIndex = leftImageRandom.getRandom();
LeftImageSequence.setCurrentChildIndex(leftImageIndex);
RightImageSequence.setCurrentChildIndex(leftImageIndex);
//take hidden objects and put them in an array
hiddenObjects = RightImageSequence.CurrentChild.transform.GetChild(0).transform.GetComponentsInChildren<Transform>();
for(int i=1;i<hiddenObjects.Length;i++)
hiddenObjects[i].gameObject.GetOrAddComponent<MouseEventSystem>().MouseEvent += ClickedHiddenObject;
Debug.Log(hiddenObjects.Length);
}
private void ClickedHiddenObject(GameObject target, MouseEventType type)
{
if (type == MouseEventType.CLICK && CanClick)
{
int targetIndex = System.Array.IndexOf(hiddenObjects, target.gameObject);
Debug.Log(targetIndex);
hiddenObjects[targetIndex].GetComponent<SpriteRenderer>().DOFade(1f, 0.3f).SetEase(Ease.Linear);
}
}
private Transform[]隐藏对象;
void Start()
{
leftImageRandom=新的随机化器(0,LeftImageSequence.transform.childCount-1,true);
DoStart();
}
私有void DoStart()
{
leftImageIndex=leftImageRandom.getRandom();
setCurrentChildIndex(leftImageIndex);
setCurrentChildIndex(leftImageIndex);
//将隐藏的对象放入数组中
hiddenObjects=RightImageSequence.CurrentChild.transform.GetChild(0.transform.GetComponentsInChildren();
对于代码中的(int i=1;i:
private Transform[] hiddenObjects;
...
System.Array.IndexOf(hiddenObjects, target.gameObject)
hiddenObjects
是一个Transform
数组,但是target.gameObject
是一个gameObject
(实际上target
已经是一个gameObject,所以这是多余的):类型不匹配,所以实际上gameObject
永远不会等于Transform
相反,请尝试:
System.Array.IndexOf(hiddenObjects, target.transform)
“我放了一个屏幕截图,可以告诉你一切。”请不要这样做。相反,将代码作为文本发布,最好是以a的形式发布。从根本上说,我认为问题在于数组不包含您期望的元素。考虑到您的数组是PolygonCallider2D
,并且您正试图找到游戏对象,这并不奇怪……也许您应该这样做你找过目标的PolygonCallider2D
部分了吗?好吧,现在我改成了Transform array,同样的事情是什么target.gameObject
在运行时,当你执行代码的时候?代码是在我运行Unity时执行的。问题是我以前用过它,但我几乎没有遇到过任何错误关键在于使用调试器并查看值。