NullReferenceException:对象引用未设置为对象的实例TouchHandler.TouchControl()(在Assets / Script / TouchHandler.cs:78)TouchHandler.Update()(在Assets / Script / TouchHandler.cs:39)< / p>
ray = Camera.main.ScreenPointToRay(touch.position);
第78行。
我收到此错误,我无法弄清楚原因。我认为一些新鲜的眼睛可能有帮助,任何人? 谢谢。
using UnityEngine;
using System.Collections;
public class TouchHandler : MonoBehaviour {
/*****All the touch variables******/
private Vector2 fp; // first finger position
private Vector2 lp; // last finger position
private float angle;
private float swipeDistanceX;
private float swipeDistanceY;
private int swipeDistance = 50; // Distance fingure to travell to register as a swipe
private Touch touch; // touch variable
/*****All the Raycast variables******/
Ray ray;
RaycastHit hitInfo = new RaycastHit();
/*****All the PlayerController script variables******/
private PlayerController PC_component;
//private MovementHandler movementHandlerScriptComponent;
void Start()
{
PC_component = GetComponent<PlayerController>();
//movementHandlerScriptComponent = GetComponent<MovementHandler>();
//movementHandlerScriptComponent.SetisBaseNameSet(false);
}
void Update ()
{
TouchControl();
}
void OnGUI()
{
foreach(Touch t in Input.touches)
{
string message = "";
message += "ID: " + t.fingerId + "\n";
message += "Phase: " + t.phase.ToString() + "\n";
message += "TapCount: " + t.tapCount + "\n";
message += "X: " + t.position.x + "\n";
message += "Y: " + t.position.y + "\n";
message += "Delta: " + t.deltaPosition + "\n";
int num = t.fingerId;
GUI.Label(new Rect(0 + 130 * num, 0, 120, 120), message);
}
}
void castingRay()
{
if(Physics.Raycast(ray,out hitInfo))
{
if(hitInfo.transform.tag == "Base")
{
PC_component.spawnPlayer(hitInfo);
//movementHandlerScriptComponent.Setsb_(hitInfo);
//movementHandlerScriptComponent.SetisBaseNameSet(true);
}
}
}
void TouchControl()
{
if(Input.touchCount == 1)
{
touch = Input.GetTouch(0);
ray = Camera.main.ScreenPointToRay(touch.position);
if (touch.phase == TouchPhase.Began)
{
fp = touch.position;
lp = touch.position;
//Raycasting
//if(movementHandlerScriptComponent.GetisBaseNameSet() == false)
if(PC_component.isPlayerSpawned == false)
castingRay();
}
if (touch.phase == TouchPhase.Moved )
{
lp = touch.position;
swipeDistanceX = Mathf.Abs((lp.x-fp.x));
swipeDistanceY = Mathf.Abs((lp.y-fp.y));
}
if(touch.phase == TouchPhase.Ended)
{
angle = Mathf.Atan2((lp.x-fp.x),(lp.y-fp.y))*57.2957795f;
swipeControlls();
}
}
}
void swipeControlls()
{
if(angle > 60 && angle < 120 && swipeDistanceX > swipeDistance)
{
Debug.Log("right");
PC_component.moveDirection = "right";
}
if(angle > 150 || angle < -150 && swipeDistanceY > swipeDistance)
{
Debug.Log("down");
}
if(angle < -60 && angle > -120 && swipeDistanceX > swipeDistance)
{
Debug.Log("left");
PC_component.moveDirection = "left";
}
if(angle > -30 && angle < 30 && swipeDistanceY > swipeDistance)
{
Debug.Log("up");
}
}
}
答案 0 :(得分:2)
请检查相机是否已指定“MainCamera”标签。
如果分配了其他标签,则不会将其视为主摄像头。