我正在研究简单的策略游戏机制.我有一个军营预制件.当我在场景中添加军营并点击军营时,我收到一个NullReferenceException错误:
NullReferenceException:对象引用未设置为对象的实例PlacementController.Update()(在Assets/Scripts/PlacementController.cs:64)
当我尝试使用Raycast2D到达军营的对撞机名称时收到错误.
军营预制件有一个Box Collider2D对撞机(触发器被检查),其标签为"建筑物",其图层为"建筑物".它有一个刚体2D组件,它是一个运动刚体.
我无法弄清楚这个问题.请帮我.
谢谢你的时间.
using UnityEngine;
using System.Collections;
public class PlacementController : MonoBehaviour
{
private Buildings buildings;
private Transform currentBuilding;
private bool _hasPlaced;
public LayerMask BuildingsMask;
public void SelectBuilding(GameObject g)
{
_hasPlaced = false;
currentBuilding = ((GameObject)Instantiate(g)).transform;
buildings = currentBuilding.GetComponent<Buildings>();
}
bool CheckPosition()
{
if (buildings.CollidersList.Count > 0)
{
return false;
}
return true;
}
// Update is called once per frame
void Update () {
Vector3 m = Input.mousePosition;
m = new Vector3(m.x, m.y, …Run Code Online (Sandbox Code Playgroud) 我想在场景中放置六个物体(球)。我认为代码看起来可行,但我收到一条控制台消息。消息:
“资产/游戏脚本/Instance.cs(26,40):错误 CS0266:无法隐式转换类型
object' toUnityEngine.Vector3'。存在显式转换(您是否缺少演员表?)”
使用 UnityEngine;使用 System.Collections;
公共类实例:MonoBehaviour { 公共游戏对象球;
public ArrayList coordinateContainer = new ArrayList();
// Use this for initialization
void Start () {
coordinateContainer.Add(new Vector3(1f,1f,1f));
coordinateContainer.Add(new Vector3(2f,1f,1f));
coordinateContainer.Add(new Vector3(3f,1f,1f));
coordinateContainer.Add(new Vector3(4f,1f,1f));
coordinateContainer.Add(new Vector3(5f,1f,1f));
coordinateContainer.Add(new Vector3(6f,1f,1f));
//ball.transform.position = new Vector3(1f,1f,1f);
ball.transform.rotation = Quaternion.identity;
for (int i = 0; i < 6; i++) {
ball.transform.position = coordinateContainer[i];
Instantiate(ball,ball.transform.position,ball.transform.rotation);
}
}
// Update is called once per frame
void Update () {
}
Run Code Online (Sandbox Code Playgroud)
}