Sha*_*rpy 6 c# unity-game-engine unity3d-2dtools
生成错误的代码:
void Update()
{
if (Input.touchCount > 0)
{
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero);
if (hit && hit.collider != null && hit.collider.name == "leftTapArea")
{
hit.transform.name = "Hit";
}
}
}
Run Code Online (Sandbox Code Playgroud)
它说这个字符串有问题:
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position),Vector2.zero);
错误:
NullReferenceException:对象引用未设置为对象的实例leftScript.Update()(在Assets/leftScript.cs:16)
Pro*_*mer 11
在代码中唯一可以返回null的是Camera.main.ScreenToWorldPoint.这意味着Camera.main是null.对于Camera.main被初始化,相机必须有MainCamera标签.
选择Camera GameObject,然后将标签更改为MainCamera.
如果您不希望您的相机位于MainCamera标签中,您也可以直接找到机智,GameObject.Find然后从中获取Camera组件.
Camera cam;
void Start()
{
cam = GameObject.Find("NameOfCameraGameObject").GetComponent<Camera>();
}
void Update()
{
if (Input.touchCount > 0)
{
RaycastHit2D hit = Physics2D.Raycast(cam.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero);
if (hit && hit.collider != null && hit.collider.name == "leftTapArea")
{
hit.transform.name = "Hit";
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1889 次 |
| 最近记录: |