наследовать значение переменной из класса в подкласс c # - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть 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);

        }*/
    }
}

1 Ответ

0 голосов
/ 22 февраля 2019

Если я понимаю ваш вопрос, вы просто хотите вызвать функцию getx и вернуть значение, которое вы установили в x в первом скрипте.Однако, если вы не вызываете эту функцию goForward, вы не устанавливаете x, и я не вижу, где вы это делаете.Похоже, ваше высказывание, когда вы звоните goforward, вы получаете то, что хотите, что имеет смысл.вам просто нужно вызвать эту функцию goforward во втором скрипте, чтобы установить x в значение, прежде чем вызывать getx.

Вы не наследуете x, когда вы делаете это, вы просто устанавливаете publicпеременная, которая в порядке.вы можете установить значение для вашей публичной переменной x в этой функции или в любом месте этого класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...