System.Array.IndexOf returns -1
System.Array.IndexOf returns -1
我把截图告诉你一切。
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);
}
}
我有一个 targetIndex 需要 return 我点击的对象的索引。每个对象都包含 PoligonCollider2D 组件。问题是它总是 returns -1 到任何对象。有什么问题,我做错了什么?
来自您的代码:
private Transform[] hiddenObjects;
...
System.Array.IndexOf(hiddenObjects, target.gameObject)
hiddenObjects
是一个Transform
的数组,但是target.gameObject
是一个GameObject
(实际上target
已经是一个GameObject,所以这是多余的) : 类型不匹配,所以 GameObject
永远不会等于 Transform
.
改为尝试:
System.Array.IndexOf(hiddenObjects, target.transform)
我把截图告诉你一切。
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);
}
}
我有一个 targetIndex 需要 return 我点击的对象的索引。每个对象都包含 PoligonCollider2D 组件。问题是它总是 returns -1 到任何对象。有什么问题,我做错了什么?
来自您的代码:
private Transform[] hiddenObjects;
...
System.Array.IndexOf(hiddenObjects, target.gameObject)
hiddenObjects
是一个Transform
的数组,但是target.gameObject
是一个GameObject
(实际上target
已经是一个GameObject,所以这是多余的) : 类型不匹配,所以 GameObject
永远不会等于 Transform
.
改为尝试:
System.Array.IndexOf(hiddenObjects, target.transform)