c# - Unity拖放,与索引问题作斗争
问题描述
我正在做拖放功能。统一二维
三个选项,一个空白
我放了三个选项,它命名为“option1”、“option2”、“option3”
**这个场景空白应该匹配选项3
下一个场景空白应该匹配 option1
最后一个场景空白应该匹配选项2**
这就是我要的。但它说
IndexOutOfRangeException:索引超出了数组的范围。streetlight_dragdrop.Start () (在
(我使用这个代码另一个函数“3个选项和3个空白”它工作正常。但它在这种情况下不起作用......)
public GameObject[] options; //drag options objects
public GameObject[] blankoptions; //blank
Vector3[] optionsStartPos;
Vector3[] blankoptionsStartPos;
void Start()
{
optionsStartPos = new Vector3[options.Length];
blankoptionsStartPos = new Vector3[blankoptions.Length];
for (int i = 0; i < options.Length; i++)
{
optionsStartPos[i] = options[i].transform.position;
blankoptionsStartPos[i] = blankoptions[i].transform.position;
}
}
public void dragOptions(GameObject option)
{
option.transform.position = Input.mousePosition;
}
public void dropOptions(GameObject option)
{
int index = System.Array.IndexOf(options, option);
float dist = Vector3.Distance(option.transform.position, blankoptions[index].transform.position);
if (dist < 80) //correct
{
option.transform.position = blankoptions[index].transform.position;
if (gameObject.name == "option3")
{
//after 2sec, scene change func
Invoke("street_5", 2);
}
}
//incorrect
else
{
Handheld.Vibrate();
option.transform.position = optionsStartPos[index];
}
}
解决方案
(希望我理解正确——因为你没有发布整个错误消息)在这个循环中,你从 0 循环到 options.Length,但是如果 blankoptions.Length 更小怎么办?或相反亦然?这可能会导致“索引超出范围”错误。
for (int i = 0; i < options.Length; i++)
{
optionsStartPos[i] = options[i].transform.position;
blankoptionsStartPos[i] = blankoptions[i].transform.position;
}
例如:
optionsStartPos = new Vector3[10];
blankoptionsStartPos = new Vector3[1000];
for (int i = 0; i < options.Length; i++)
{
optionsStartPos[i] = options[i].transform.position;
blankoptionsStartPos[i] = blankoptions[i].transform.position;
}
会导致这个错误。
推荐阅读
- android - Flutter - Android 闪屏仍然是白色的
- event-handling - 无法在 NestJs 中捕捉事件
- node.js - UnhandledPromiseRejectionWarning:未处理的承诺拒绝。当使用 Pusher 进行实时 mongoDb
- python - Python:将字典附加到 JSON 列表:
- reactjs - WebdriverIO E2E 测试 - 模拟在 React 组件中调用的函数
- python - 有没有办法对未定义的变量执行 while 循环?(我怎样才能重写这个,Python)
- mysql - 加入两个计数查询没有给出正确的结果
- c++ - 带有模板化基类的“静态数据成员的定义在其类的范围内”的规范规则
- android - 无法在颤振中构建apk
- python - 计算pandas dataFrame中所有行的差之和