I'm programming a JRPG off of a tutorial online to try and learn Unity and C# code. This is a program for creating a menu of enemy units to attack:
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()
{
}
}
At line 29 (where targetEnemyUnit
is instantiated) during game tests I get a NullReferenceException error which I figure means Instantiate isn't working (it also highlights here but doesn't in Visual Studio). I'm working largely off of a tutorial but this matches and I'm not sure what exactly I'm doing wrong here.