У меня есть 2 сцены, каждая из которых имеет свой собственный сценарий, просто я хочу получить значение из сценария 1 и использовать его в сценарии 2, который загружается во вторых сценах, которые происходят, если он всегда загружает значение по умолчанию для этой переменной ex;если я вызываю строковую переменную, которая должна иметь значение (sas), она появляется во втором скрипте со значением null, если целое число будет 0, хотя если я напечатаю ее в первом скрипте, она будет иметь правильное значение, которое "sas".
посмотрите на метод goforward (), который обновляет переменную x
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Trainbehavior : MonoBehaviour
{
public float force = (float)0.1;
private Rigidbody sph;
public GameObject button_goforward;
public GameObject button_goright;
public GameObject button_results;
public GameObject button_nextlevel;
public Text Results;
public String x ;
//public int g;
//public gamepbject panel ;
//panel.gameobject.setactive(true);
private void Start()
{
sph = GetComponent<Rigidbody>();
button_goforward.SetActive(false);
button_goright.SetActive(false);
button_results.SetActive(false);
button_nextlevel.SetActive(false);
}
private void OnTriggerEnter(Collider other)
{
if (other.name == "switchtrigger")
{
button_goforward.SetActive(true);
button_goright.SetActive(true);
button_results.SetActive(true);
Time.timeScale = 0;
}
}
public void goforward()
{
setx("sas"); // if a called print x it will be sas
// Results.text = "dzf";
}
public String getx()
{
return x;
}
public void setx(String x)
{
this.x = x;
}
второй скрипт в обновлении iam, пытающийся получить значение x с помощью finalresults.text = train.getx ();
public class cases : Trainbehavior
{
Trainbehavior trains;
public Text finalresults;
public string cx;
// Start is called before the first frame update
void Start()
{
trains = GetComponent<Trainbehavior>();
/*var trainscript = gameObject.GetComponent<Trainbehavior>();
if (trainscript)
{
finalresults.text = Results.GetComponent<UnityEngine.UI.Text>().text;
}*/
}
// Update is called once per frame
void Update()
{
// finalresults.text = trains.x;
finalresults.text = trains.getx(); // if i called print(x) it will be null !
/*
var trainscript = gameObject.GetComponent<Trainbehavior>();
if (trainscript)
{
// GameObject x = trainscript.GameObject.Find("test");
finalresults.text = cx;
print(cx);
}*/
}
}