visual-studio - 我得到索引超出了数组错误的范围
问题描述
我是统一编码的新手,我写了一些代码让我的索引超出了数组错误的范围,但我不知道问题是什么。如果您能给我一些关于我做错了什么的见解,那就太好了。这是我为我正在统一开发的游戏编写的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 20.5f;
public float HorizontalInput;
public float xrange = 16;
public GameObject[] projectileprefab;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
**//This is the broken line of code**
int ProjectileIndex = Random.Range(0, projectileprefab.Length);
Instantiate(projectileprefab[ProjectileIndex], transform.position, transform.rotation);
}
transform.Translate(Vector3.right * Time.deltaTime * speed * HorizontalInput);
HorizontalInput = Input.GetAxis("Horizontal");
if (transform.position.x < -xrange)
{
transform.position = new Vector3(-xrange, transform.position.y, transform.position.z);
}
if (transform.position.x > xrange)
{
transform.position = new Vector3(xrange, transform.position.y, transform.position.z);
}
}
}
解决方案
问题是:
int ProjectileIndex = Random.Range(0, projectileprefab.Length);
Instantiate(projectileprefab[ProjectileIndex], transform.position, transform.rotation)
projectileprefab 的长度为零,因此它实例化了第一个对象,但它是空的。解决方案:在检查器中,您可以设置 projectileprefab 数组的长度并将游戏对象分配给它。
推荐阅读
- python - Python 石墨烯订阅服务器
- python - Chrome_Options 参数检查
- java - 如何衡量单元测试与集成测试?
- linux - 检查文件中是否没有文本后,如何将文本附加到文件中?
- reactjs - 使用 useEffect 强制对渲染初始状态做出反应
- java - 按 dynamoDb 表的 Id(hashKey) 检索数据时出错
- html - 在 CSS 中设置字体大小扭曲输入框空间
- python - 客户端证书在 curl 中有效,但在 Python 中无效
- python - SQLAlchemy 安装失败,“模块“枚举”没有属性“IntFlag”
- java - Java Swing:如何通过 JLayeredPane 传递鼠标事件