我有2个场景,每个场景都有自己的脚本,只是我想从脚本1中获取一个值,并在脚本2中使用它,然后在第二个场景中加载脚本2,因为它总是加载此变量ex的默认值;如果我调用应具有值(sas)的字符串变量,则它在第二个脚本中显示,如果整数为0,则在null中显示null,尽管如果在第一个脚本中将其打印为“ 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 = trains.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);
}*/
}
}
答案 0 :(得分:0)
如果我理解您的问题,则只想调用getx
函数并在第一个脚本中返回您设置为x
的值。但是,除非您调用goForward函数,否则请不要设置x
,而我看不到您在哪里进行设置。看起来像您所说的话,当您打电话给goforward
时,您会得到想要的东西,这是有道理的。您只需要在第二个脚本中调用该goforward
函数,即可在调用x
之前将getx
设置为一个值。
执行此操作时,您不会继承x
,只需设置一个公共变量即可。您可以在该函数中或该类中的任何位置将值设置为公共变量x
。