Я пытаюсь разработать игру единства, в которой пользователь перемещает объекты вокруг accoding к данным, введенным в texbox. Но я не могу сделать данные из текстового поля применимыми к объекту, который я хочу переместить. Вот C# скрипт для текстового поля:Unity C# как делиться данными между классами?
using UnityEngine;
using System.Collections;
public class ButtonText : MonoBehaviour
{
private bool defineModel = false;
string beta = "";
public float number ;
bool res ;
void OnGUI()
{
if (!defineModel) {
if (GUI.Button (new Rect (0, 0, 150, 20), "Define a shift"))
defineModel = true;
} else {
beta = GUI.TextField (new Rect (250, 157, 250, 25), beta, 40);
res = float.TryParse(beta, out number);
if (res == false) { print("String is not a number"); }
else { number = float.Parse(beta); }
if (GUI.Button (new Rect (300, 250, 100, 30), "OK")) {
if(!res) return;
else { Debug.Log (" number = " + number);
defineModel = false;
return; }
}
}
}
и вот сценарий, чтобы создать сферу для перемещения во время игры
using UnityEngine;
using System.Collections;
public class CloneSphere : MonoBehaviour
{
public GameObject sphere;
void Start()
{
GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); // Make a new sphere
sphere.name = "Sphere"; // give it a name
sphere.transform.position = new Vector3(0, 0, 0); // position the sphere
}
float number;
void Update() {
sphere = GameObject.Find("Sphere");
float location = GetComponent<ButtonText>().number ;
sphere.transform.Translate(0, location ,0, Space.World);
}
}
Последние две строки последнего сценария генерирует ошибку (т.е. , если я прокомментирую эти две строки, нет ошибки): NullReferenceException: Ссылка на объект не установлена в экземпляр объекта. CloneSphere.Update() (at Assets/CloneSphere.cs: 20)
Что здесь не так? Как я могу сделать это число «местоположение» применимым к вертикальному смещению сферы?
Тэг Unity в SO не предназначен для игрового движка Unity3d. Используйте тег единства. –