c# - tutoriales - unity 5 costo
Camera.main es nulo al realizar raycast (2)
Asegúrese de tener en su escena un objeto de juego activo con el componente
Camera
y la etiqueta "MainCamera"
Código que genera un error:
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";
}
}
}
Dice que algo está mal con esta cadena:
RaycastHit2D hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint (Input.GetTouch (0) .position), Vector2.zero);
Error:
NullReferenceException: referencia de objeto no establecida en una instancia de un objeto leftScript.Update () (en Assets / leftScript.cs: 16)
Lo único que puede devolver nulo en su código es
Camera.main.ScreenToWorldPoint
.
Significa que
Camera.main
es
null
.
Para que
Camera.main
se inicialice, la cámara debe tener la etiqueta
MainCamera
.
Seleccione Camera GameObject y luego cambie la etiqueta a MainCamera.
Si no desea que su cámara esté en la etiqueta MainCamera, también puede encontrar el ingenio directamente con
GameObject.Find
y obtenga el componente
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";
}
}
}