基本上我有一个脚本设置,在播放期间打印到控制台。
//Method to loop find question to be asked and print it as well as loop through answerText and print the appropriate answer options/
public void AskNewQuestion ()
{
//prints Person: + apropriate question based on questionUpTo.
Debug.Log ("Person:" + questionsText [questionUpTo]);
//Loops through answersText and compares it to questionUpTo to find applicable answers.
for (int i = 0; i < answerText[questionUpTo].Count; i++)
{
//Prints applicable answers to console.
Debug.Log(i+1 + ":" + answerText[questionUpTo][i]);
}
}
现在我需要这个不打印到控制台,而是通过另一个处理画布的脚本,画布是我需要打印文本的地方。
public class Textboxmanager : MonoBehaviour {
public GameObject textBox;
public Text theText;
public TextAsset textFile;
public string[] textLines;
public int currentLine;
public int endAtLine;
public bool isActive;
// Use this for initialization
void Start ()
{
if(textFile != null)
{
textLines = (textFile.text.Split('\n'));
}
if(endAtLine == 0)
{
endAtLine = textLines.Length - 1;
}
if(isActive)
{
EnableTextBox();
}
else
{
DisableTextBox();
}
}
void Update()
{
if(!isActive)
{
return;
}
theText.text = textLines[currentLine];
if(Input.GetKeyDown(KeyCode.Return))
{
currentLine += 1;
}
if(currentLine > endAtLine)
{
DisableTextBox();
}
}
public void EnableTextBox()
{
textBox.SetActive(true);
}
public void DisableTextBox()
{
textBox.SetActive(false);
}
}
答案 0 :(得分:0)
有很多方法可以实现这一目标。首先,我注意到你试图打印到的脚本是各种各样的经理。在这种情况下,有一个名为Singletons的高级概念。
以下是如何在C-Sharp中实现单身人士的链接: https://unity3d.com/learn/tutorials/projects/2d-roguelike-tutorial/writing-game-manager
观看统一视频并确保这是解决问题的正确方法。
如果你不想走这条复杂的道路而宁愿避免头痛,那么我会尝试解释如何引用另一个脚本及其所有功能,变量和其他数据而不需要单身。
Class1 {
public Class2 class2Reference;
private void printTextFromClass2() {
class2Reference.printAnswerText();
}
}
Class2 {
public void printAnswerText() {
Debug.Log("String");
}
}
在这个例子中你可以看到我有两个类,这些类可能在不同的脚本中,在Unity中完全不同的游戏对象。我们使用数据类型创建了一个变量作为我们尝试访问的类名。在这种情况下,数据类型为Class2。然后,我们在需要访问该脚本的任何时候将其用作变量。
你唯一要做的就是给它一个脚本来引用。就像字符串为空,直到我们给它一个值,我们的变量是私有的Class2 class2Reference&#39;在我们给它一个值之前它是null。
这很容易。保存并回归统一。你应该在检查器中看到你的变量&#34; none&#34;写在它旁边。将您的第二个脚本拖放到该框中,您应该准备隆隆声。
希望这能帮助你解决好友。
答案 1 :(得分:0)
在TextboxManager类中实例化AskNewQuestion类。
puclic TextboxManager : Monobehavior {
AskNewQuestion askNewQuestion = new AskNewQuestion();
}
&#13;
在AskNewQuestion中创建一个返回数组字符串的函数。然后在TextboxManager类上调用它以获取数组字符串。像这样:textLines = askNewQuestion.questions;
。
编辑:您可以使用{ get; set; }
方法。首先初始化存储字符串数组的位置,然后将其应用于{ get; set; }
方法。
string[] questions;
public string[] Questions {
get {
return quesions;
}
}
&#13;