2017-01-17 4 views
1

Были ошибки «ссылка на объект требуется для доступа к нестатическому члену».Ошибка C# Ссылка на объект требуется для доступа к нестатическому члену (последовательная связь между единицей и ардуино)

Вы знаете, как решить эти проблемы? Я не хочу использовать «статический», потому что единство gui «button-Onclick» не может использовать статический член.

enter image description here

как этот скриншот, если мы используем статический элемент на GUI (холст кнопки кнопки мыши), что статический член не перечислены ("отсутствует --------- --- ")

мой код - удар.

Sending.cs

using UnityEngine; 
using System.Collections; 
using System.IO.Ports; 
using System.Threading; 
public class Sending : MonoBehaviour{ 
    //public static SerialPort sp = new SerialPort("COM4",9600,Parity. 
    public SerialPort sp = new SerialPort("----------); 
    public string message2; 
    float timePassed = 0.0f; 
    //Use this for initialization 
    void Start() 
    { 
     OpenConnection(); 
    } 

    //Update is called once per frame 
    void Update(){ 
     //timePassed+= Time.deltaTime; 
     //if(timePassed)=0.2f){ 
     //print("BytesToRead" +sp.BytesToRead); 
     message2 = sp.ReadLine(); 
     print (message2); 
     ///timePassed = 0.0f; 
     //} 
    } 

    public void OpenConnection() 
    { 
     if(sp != null) 
     { 
      if (sp.IsOpen) { 
       sp.Close(); 
       print ("Closing port, because it was already open!"); 
      } else { 
       sp.Open();//open the connection 
       sp.ReadTimeout = 16; 
       print ("Port Opened!"); 
       //message = "Port Opened"; 
      } 
     } 
     else 
     { 
      if (sp.IsOpen) 
      { 
       print ("Port is already open"); 
      } 
      else 
      { 
       print ("Port == null"); 
      } 
     } 
    } 
    void OnApplicationQuit() 
    { 
     sp.Close(); 
    } 
    public void sendStop(){ 
     sp.Write ("s"); 
    } 
    public void sendForward(){ 
     sp.Write("f"); 
    } 
    public void sendBack(){ 
     sp.Write("b"); 
    } 
    public void sendRight(){ 
     sp.Write("r"); 
    } 
    public void sendLeft(){ 
     sp.Write("l"); 
    } 
} 

также есть некоторые сценарий.

CallForward.cs

using UnityEngine; 
using System.Collections; 
public class CallForward: MonoBehaviour { 

    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 

    } 

    void OnMouseDown(){ 
     print ("Clicked"); 
     Sending.sendForward(); 
    } 
} 

enter image description here

+0

Этот проект предназначен для соединения единства с ардуино для управления двигателем постоянного тока с помощью uGUI. – tk08

+0

Как CallForward.cs, у меня есть CallStop, Right, Left, Back.cs. – tk08

+0

Я уже контролировал двигатель постоянного тока от объекта Unity «Cube» до Arduino по Serial Communication. Однако, использование статического. Используя тот же алгоритм, я пытаюсь кодировать uGUI. В результате uGUI> Canvas> Button (Onclick отсутствует). А теперь, я удалить статический из Sending.cs общественного SerialPort зр = новый SerialPort ("----------); и общественности (статический) аннулируются sendStop() { зр. Write ("s"); } – tk08

ответ

2

Вы должны получить Отсылаю-скрипт, прежде чем использовать его. Только статические классы могут использоваться без их первоначального запуска.

GameObject.Find("GameObjectWithSendingScript").GetComponent<Sending>().sendForward(); 
+1

спасибо за вы советуете. , к которому я должен приложить этот скрипт, «Sending.cs» или «CallForward.cs»? – tk08

+0

Этот код служит вам для получения ошибки в CallForward.cs. Попробуйте использовать мой код вместо 'Sending.sendForward();' – Maakep

+1

@peter Спасибо, peter.for вашего совета. Я решил эту проблему. Ты Бог! отличный инженер !!!!! О, GREAATTTT !!!!!!! Я очень ценю вас! – tk08

Смежные вопросы

 Смежные вопросы