- Home /
Error please help
I cant seem to figure this out i am sorta new to unity and i cant seem to understand how to fix this. I keep getting this error "Unexpected symbol if' in class, struct, or interface member declaration" and i also get this "Unexpected symbol >' in class, struct, or interface member declaration" and i got 1 more "Primary constructor body is not allowed" How do i fix this? here is the script
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class TouchInput : MonoBehaviour {
 public LayerMask touchInputMask;
 private List<GameObject> touchList = new List<GameObject>();
 private GameObject[] touchesOld;
 private RaycastHit hit;
 // Update is called once per frame
 void Update ()
 {
     #if UNITY_EDITOR
     if (Input.GetMouseButtonDown (0) || Input.GetMouseButtonUp (0)) {
         touchesOld = new GameObject[touchList.Count];
         touchList.CopyTo (touchesOld);
         touchList.Clear ();
         Ray ray = camera.ScreenPointToRay (Input.mousePosition);
         if (Physics.Raycast (ray, out hit, TouchInputMask)) {
             GameObject recipient = hit.transform.gameObject;
             touchList.ADd (recipient);
             if (Input.GetMouseButtonDown (0)) {
                 recipient.SendMessage ("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
             }
             if (Input.GetMouseButtonUp (0)) {
                 recipient.SendMessage ("OnTouchUp", hit.point, SendMessageOptions.DontRequireReceiver);
             }
             if (Input.GetMouseButtonDown (0)) {
                 recipient.SendMessage ("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
             }
         } 
     }
     foreach (GameObject g in touchesOld) {
         if (!touchList.Contains (g)) {
             g.SendMessage ("OnTouchExit", hit.point, SendMessageOptions.DontRequireReceiver);
         }
     }
 }
 #endif
 
 
     if(Input.touchCount >(0) {
         
         touchesOld = new GameObject[touchList.Count];
         touchList.CopyTo (touchesOld);
         touchList.Clear ();
     foreach (Touch touch in Input.touches) {
         Ray ray = camera.ScreenPointToRay (touch.position);
         if (Physics.Raycast (ray, out hit, TouchInputMask)) {
             GameObject recipient = hit.transform.gameObject;
                 touchList.ADd (recipient);
             if (touch.phase == TouchPhase.Began) {
                 recipient.SendMessage ("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
             }
             if (touch.phase == TouchPhase.Ended) {
                 recipient.SendMessage ("OnTouchUp", hit.point, SendMessageOptions.DontRequireReceiver);
             }
             if (touch.phase == TouchPhase.Stationary || touch.phase == TouchPhas.Moved) {
                 recipient.SendMessage ("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
             }
             if (touch.phase == TouchPhase.Canceled) {
                 recipient.SendMessage ("OnTouchExit", hit.point, SendMessageOptions.DontRequireReceiver);
             }
 
             } 
         }
         foreach (GameObject g in touchesOld) {
             if (!touchList.Contains (g)) {
                 g.SendMessage ("OnTouchExit",hit.point, SendMessageOptions.DontRequireReceiver);
             }
         }
     }
 }
Answer by Buckslice · Nov 29, 2017 at 02:58 AM
I am not sure what the exact purpose of this code is, but the errors seemed to be mainly a combination of extra braces, incorrect function/variable names (capitalization matters), and incorrect function parameters. Good luck!
     public LayerMask touchInputMask;
     private List<GameObject> touchList = new List<GameObject>();
     private GameObject[] touchesOld;
     private RaycastHit hit;
     // Update is called once per frame
     void Update() {
 #if UNITY_EDITOR
         if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonUp(0)) {
             touchesOld = new GameObject[touchList.Count];
             touchList.CopyTo(touchesOld);
             touchList.Clear();
             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             if (Physics.Raycast(ray, out hit, 100.0f, touchInputMask.value)) {
                 GameObject recipient = hit.transform.gameObject;
                 touchList.Add(recipient);
                 if (Input.GetMouseButtonDown(0)) {
                     recipient.SendMessage("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
                 }
                 if (Input.GetMouseButtonUp(0)) {
                     recipient.SendMessage("OnTouchUp", hit.point, SendMessageOptions.DontRequireReceiver);
                 }
                 if (Input.GetMouseButtonDown(0)) {
                     recipient.SendMessage("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
                 }
             }
         }
         if (touchesOld != null) {
             foreach (GameObject g in touchesOld) {
                 if (!touchList.Contains(g)) {
                     g.SendMessage("OnTouchExit", hit.point, SendMessageOptions.DontRequireReceiver);
                 }
             }
         }
 
 #endif
         if (Input.touchCount > 0) {
 
             touchesOld = new GameObject[touchList.Count];
             touchList.CopyTo(touchesOld);
             touchList.Clear();
             foreach (Touch touch in Input.touches) {
                 Ray ray = Camera.main.ScreenPointToRay(touch.position);
                 if (Physics.Raycast(ray, out hit, 100.0f, touchInputMask.value)) {
                     GameObject recipient = hit.transform.gameObject;
                     touchList.Add(recipient);
                     if (touch.phase == TouchPhase.Began) {
                         recipient.SendMessage("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
                     }
                     if (touch.phase == TouchPhase.Ended) {
                         recipient.SendMessage("OnTouchUp", hit.point, SendMessageOptions.DontRequireReceiver);
                     }
                     if (touch.phase == TouchPhase.Stationary || touch.phase == TouchPhase.Moved) {
                         recipient.SendMessage("OnTouchDown", hit.point, SendMessageOptions.DontRequireReceiver);
                     }
                     if (touch.phase == TouchPhase.Canceled) {
                         recipient.SendMessage("OnTouchExit", hit.point, SendMessageOptions.DontRequireReceiver);
                     }
 
                 }
             }
 
             if (touchesOld != null) {
                 foreach (GameObject g in touchesOld) {
                     if (!touchList.Contains(g)) {
                         g.SendMessage("OnTouchExit", hit.point, SendMessageOptions.DontRequireReceiver);
                     }
                 }
             }
         }
     }
 Add this function to another script thats on the objects you want to be able to click
     void OnTouchDown(object o) {
         Debug.Log("wow");
     }
Your answer
 
 
             Follow this Question
Related Questions
Serialization depth limit exceeded 3 Answers
Unity web pallyer install problem 0 Answers
Unity 2018.1.6f1 Unity Package Manager Error 0 Answers
Parsing Error CS8025 1 Answer
Insert a semicolon error 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                