我可以从脚本中访问对象,但是我想直接更改脚本中对象的值,而这不允许我这样做。这是我的主要脚本脚本:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using RTS;
public class QuestionMenu : MonoBehaviour {
public struct Question{
public string questionText;
public string answer;
public string solution1;
public string solution2;
public string solution3;
}
//public void QuestionObject(string QuestionText, string answer, string solution1, string solution2, string solution3){
//Debug.Log ("lol");
//}
public Question QuestionObject = new Question();
Canvas canvas;
public UserInput Player;
public Text QuestionText;
public Text Button1;
// Use this for initialization
void Start () {
canvas = GetComponent<Canvas>();
canvas.enabled = false;
ResourceManager.QuestionMenuOpen = false;
//instruction = GetComponent<Text>();
//Debug.Log (QuestionText);
Button1.text = "Crazy";
QuestionText.text = "Yo Bro";
}
// Update is called once per frame
void Update () {
////Debug.Log (QuestionObject.questionText);
if(ResourceManager.QuestionMenuOpen == true){
//QuestionObject.questionText = "bloo";
Pause ();
//QuestionText.text = "Question 1) Differentiate 3x\u2074 + 2x.";
//Button1.text = "12x\u00B3 + 2";
}
}
public void Pause (){
canvas.enabled = true;
Player.enabled = false;
Time.timeScale = 0.0f;
Cursor.visible = true;
//QuestionObject = Questions.QuestionObject;
Debug.Log (QuestionObject.questionText);
QuestionText.text = QuestionObject.questionText;
//ResourceManager.QuestionMenuOpen = true;
}
void Resume (){
Cursor.visible = false;
canvas.enabled = false;
Player.enabled = true;
Time.timeScale = 1.0f;
ResourceManager.QuestionMenuOpen = false;
}
}
这是我的脚本:
using UnityEngine;
using System.Collections;
public class QuestionScript : MonoBehaviour {
// Use this for initialization
void Start () {
QuestionMenu.QuestionObject.answer = "asdf";
}
// Update is called once per frame
void Update () {
}
}
编辑:我希望从上面显示的脚本访问对象 QuestionObject 是附有两个脚本的游戏对象的屏幕截图
最佳答案
我认为您误解了继承概念。当你像这里一样声明一个类时:
public class Questions : QuestionMenu {
这意味着 Question 类具有与 QuestionMenu 类相同的函数和变量(我假设它们都是公共(public)的)。但这并不意味着您可以像那样将 2 个游戏对象相互连接。当您在 Parent 上设置问题脚本时,它是另一个对象(我的意思是问题对象)。当您在 Child 上设置 QuestionMenu 脚本时,它是完全不同的新对象。他们也彼此没有联系。你应该做的是:
using UnityEngine;
using System.Collections;
public class Questions {
public Questions dpoint; // u can set this on unity editor by just draging and dropping the parent object here.
void Start () {
//or you can get it from code I belive
dpoint = transform.parent.GetComponent<Question>();
QuestionObject.questionText = "asd";
}
// Update is called once per frame
void Update () {
base.QuestionObject.questionText = "asd2";
}
}
希望我没有误解你的问题..
关于C# 脚本(子对象)不允许我访问另一个脚本(这是父对象)统一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33776507/