【发布时间】:2020-05-19 03:55:15
【问题描述】:
我正在根据在线教程编写 JRPG,以尝试学习 Unity 和 C# 代码。这是一个用于创建要攻击的敌方单位菜单的程序:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//using UnityEngine.Experimental.UIElements;
public class CreateEnemyMenuItem : MonoBehaviour {
[SerializeField]
private GameObject targetEnemyUnitPrefab;
[SerializeField]
private Sprite menuItemSprite;
[SerializeField]
private Vector2 initialPosition, itemDimensions;
[SerializeField]
private KillEnemy killEnemyScript;
private void Awake()
{
GameObject enemyUnitsMenu = GameObject.Find("EnemyUnitsMenu");
GameObject[] existingItems = GameObject.FindGameObjectsWithTag("TargetEnemyUnit");
Vector2 nextPosition = new Vector2(this.initialPosition.x + (existingItems.Length * this.itemDimensions.x), this.initialPosition.y);
GameObject targetEnemyUnit = Instantiate(this.targetEnemyUnitPrefab, enemyUnitsMenu.transform) as GameObject;
targetEnemyUnit.name = "Target" + this.gameObject.name;
targetEnemyUnit.transform.localPosition = nextPosition;
targetEnemyUnit.transform.localScale = new Vector2(0.7f, 0.7f);
targetEnemyUnit.GetComponent<Button>().onClick.AddListener (() => selectEnemyTarget());
targetEnemyUnit.GetComponent<Image>().sprite = this.menuItemSprite;
killEnemyScript.menuItem = targetEnemyUnit;
}
public void selectEnemyTarget()
{
}
}
在第 29 行(targetEnemyUnit 被实例化)在游戏测试期间,我收到一个 NullReferenceException 错误,我认为这意味着 Instantiate 不起作用(它也在此处突出显示,但在 Visual Studio 中没有)。我主要是根据教程工作,但这匹配,我不确定我在这里到底做错了什么。
【问题讨论】:
-
能否添加一个教程链接,以便我们查看您从哪里获取信息和代码?
标签: c# unity3d game-engine