Ich möchte auf myNumber
von UDPReceive
Klasse innerhalb meiner myCSV
Klasse zugreifen, aber es gibt jedes Mal 0 zurück.Zugreifen auf eine Variable aus einer anderen Klasse innerhalb einer privaten Void-Funktion C#
using UnityEngine;
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
public class UDPReceive : MonoBehaviour
{
Thread receiveThread;
UdpClient client;
public int port;
public int sizeOfData = 0;
public string time = "";
bool myDataGram = false;
public static float myNumber;
//********************************************************
// MAIN
//********************************************************
private static void Main()
{
UDPReceive receiveObj = new UDPReceive();
receiveObj.init();
string text = "";
do
{
text = Console.ReadLine();
}
while (!text.Equals("exit"));
}
//********************************************************
// START
//********************************************************
public void Start()
{
init();
}
//********************************************************
// ONGUI
//********************************************************
void OnGUI()
{
GUIStyle style = new GUIStyle();
style.alignment = TextAnchor.UpperLeft;
GUI.Box((new Rect(40, 10, 600, 600)), "Time: " + myNumber, style);
}
//********************************************************
// INIT
//********************************************************
private void init()
{
print("UDPSend.init()");
port = 3500;
receiveThread = new Thread(new ThreadStart(ReceiveData));
receiveThread.IsBackground = true;
receiveThread.Start();
}
//********************************************************
// RECEIVEDATA
//********************************************************
private void ReceiveData()
{
client = new UdpClient(port);
while (true)
{
try
{
IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
byte[] data = client.Receive(ref anyIP); //THIS IS YOUR DATA
myDataGram = true;
if (myDataGram == true)
{
float myNumber2 = 555;
myNumber = myNumber2;
}
//Thread.Sleep(1000);
}
catch (Exception err)
{
print(err.ToString());
}
}
}
}
und das Skript ich will es zuzugreifen, ist dies:
using UnityEngine;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System;
public class myCSV : MonoBehaviour
{
public TextAsset file;
public float mynewX;
public float mynewY;
public float mynewZ;
private static float myNumbersss2;
void Start()
{
Load(file);
for (int i = 1; i < 6481; i++)
{
string j = i.ToString();
float mynewX = Single.Parse(Find_point_number(j).my_x);
float mynewY = Single.Parse(Find_point_number(j).my_y);
float mynewZ = Single.Parse(Find_point_number(j).my_z);
//print(mynewX);
//print(mynewY);
//print(mynewZ);
//print(Find_point_number(j).my_x);
//print(Find_point_number(j).my_y);
//print(Find_point_number(j).my_z);
GameObject prefab = Resources.Load("Cube") as GameObject;
GameObject go = Instantiate(prefab);
go.transform.position = new Vector3(mynewX, mynewY, mynewZ);
//float myNumbersss2 = UDPReceive.myNumbersss3;
float myNumbersss2 = UDPReceive.myNumber;
print("from myCSV" + myNumbersss2);
}
}
}
Ich habe so viele Dinge ausprobiert und sie funktionieren nicht. Ich bekomme immer 0. Ich benutze dies in der Einheit und ich habe es versucht
und es hat auch nicht funktioniert. Ich weiß wirklich nicht, was ich falsch mache.
Sind Sie sicher, dass 'ReceiveData()' aufgerufen wurde und alle Bedingungen erfüllt sind, um 'myNumber' zu setzen? – John3136