【发布时间】:2019-07-29 02:48:19
【问题描述】:
我对 Unity 比较陌生,并且经常出现错误。我正在创建一个简单的 2D 游戏,玩家可以在其中向预制的敌人射击这些子弹。在 Unity 本身中,一切正常,但是当我尝试在 WebGL 中构建以在浏览器中播放时,不断弹出错误提示我的内存超出范围或索引超出范围。
我曾尝试在 chrome、firefox 和 explorer 上执行此操作,但同样的事情一直在发生。我已经尝试搜索互联网,但到目前为止还没有找到有关如何解决此问题的答案。这是我的子弹脚本的代码,如果有帮助的话。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WebShooter : MonoBehaviour {
public Transform firePoint;
public GameObject bulletPrefab;
void Update() {
if (Input.GetKeyDown(KeyCode.Space)) {
Shoot();
}
}
void Shoot() {
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
private void OnTriggerEnter2D(Collider2D hitInfo) {
Destroy(gameObject);
}
}
【问题讨论】:
-
听起来您遇到的问题是没有为游戏分配足够的内存。可能必须查看解决方案以增加分配的内存或减少使用的内存量。对于后者,可能需要考虑Object Pooling 你的子弹和敌人。至于超出范围的索引,这可能是由于某些脚本在对象被销毁后试图引用它,因此请仔细检查您处理可被销毁对象的逻辑。
-
我相信无论是敌方类型还是子弹本身在被摧毁后都可能被引用,所以我会尝试修复这个问题。如果失败,我将尝试对象池。如果它有效,我会更新你。谢谢。
标签: c# unity3d unity-webgl indexoutofrangeexception