2014-01-28 3 views
0

Я делаю игру, названную UnityCraft, и я попытался сделать способ переключения блоков!
Вот мой код:C# Ошибка Parsing

using UnityEngine; 
using System.Collections; 

public class BuildScript : MonoBehaviour { 

    RaycastHit hit; 

    public int blockSelected = 1; 

    public Transform prefab; 

    // Use this for initialization 
    void Start() { 
    } 

    // Update is called once per frame 
    void Update() { 
     if(Input.GetButtonDown(1)){ 
      blockSelected = 1; 
     } 

     if(Input.GetButtonDown(2)){ 
      blockSelected = 2; 
     } 

     if(blockSelected == 1){ 
      prefab = dirt; 
     } 

     if(blockSelected == 2){ 
      prefab = brick; 
     } 


     Ray ray = camera.ViewportPointToRay (new Vector3 (0.5f, 0.5f, 0)); 
     Vector3 G = new Vector3 (Mathf.Round (hit.point.x), Mathf.Ceil (hit.point.y), Mathf.Round (hit.point.z)); 

     if (Physics.Raycast (ray, out hit)) { 
      if (Input.GetMouseButtonDown (0)) { 
       Destroy (hit.collider.gameObject); 
       print ("Block Destroyed!"); 
      } 

      if (Input.GetMouseButtonDown (1)) { 
       Instantiate (prefab, G, Quaternion.identity); 
      } 
     } 
    } 
} 

У меня есть сборный под названием кирпич и один под названием грязи, и они связаны с блоками.

+0

Приходит с ошибкой синтаксического анализа – jezza23

+3

В чем вопрос? – SLaks

+0

В какой строке это ошибка? Что такое сообщение об ошибке? –

ответ

2

Я предполагаю, что проблема, которую вы имеете в виду, находится в строке

if(Input.GetButtonDown(1)){ 

Это не будет работать, потому что GetButtonDown не имеет целочисленный аргумент. Он принимает строку, которую вы можете найти или определить в input manager.

Из вашего кода я понимаю, что вы хотите просто использовать цифровые клавиши? В этом случае не используйте вызовы GetButton, но вместо этого используйте GetKey. Поэтому изменить свой код, чтобы что-то вроде

if(Input.GetKeyDown(KeyCode.Keypad1)){ 

для случая, когда нажатие должно вызвать что-то.