C# 在unity编辑器中工作,但不在构建之后工作

C# 在unity编辑器中工作,但不在构建之后工作,c#,unity3d,game-engine,C#,Unity3d,Game Engine,我是一名学生,我正在为我们的论文创作一部视觉小说。大部分代码都是源代码,但我研究了它并做了一些修改,使其成为我的 我的问题是,在unity editor中,一切都在运行,对话在变化,我可以通过单击按钮来选择决策,但当我尝试构建它时,除了背景之外什么都没有 生成后,我在windows中运行它,start()函数开始工作,但当我开始按任意键时,它不会更新,如下所示: 这是我的start()和update()函数中的代码: PS:Input.TouchCount也可以让游戏在android中运行,

我是一名学生,我正在为我们的论文创作一部视觉小说。大部分代码都是源代码,但我研究了它并做了一些修改,使其成为我的

我的问题是,在unity editor中,一切都在运行,对话在变化,我可以通过单击按钮来选择决策,但当我尝试构建它时,除了背景之外什么都没有

生成后,我在windows中运行它,start()函数开始工作,但当我开始按任意键时,它不会更新,如下所示:

这是我的start()和update()函数中的代码:

PS:Input.TouchCount也可以让游戏在android中运行,但我希望游戏首先在windows中运行。谢谢你的帮助

DialogueManager.cs

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;

public class DialogueManager : MonoBehaviour {
DialogueParser parser;

public string dialogue, characterName;
public int lineNum;
int pose;
public int background;
string position;
string[] options;
public bool playerTalking;
List<Button> buttons = new List<Button>();

public Text dialogueBox;
public Text nameBox;
public GameObject choiceBox;

void Start () {
    dialogue = "NO! N-NO! PLEASE NO!";
    characterName = "MC";
    pose = 0;
    background = 0;
    position = "MC";
    playerTalking = false;
    parser = GameObject.Find("DialogueParser").GetComponent<DialogueParser>();
    lineNum = 1;
}

void Update () {
    if (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Began || Input.anyKeyDown && playerTalking == false)
    {
        ShowDialogue();

        lineNum++;
    }

    UpdateUI();
}

public void ShowDialogue()
{
    ResetImages();
    ParseLine();
}

void ResetImages()
{
    if (characterName != "")
    {
        GameObject character = GameObject.Find(characterName);
        SpriteRenderer currSprite = character.GetComponent<SpriteRenderer>();
        currSprite.sprite = null;
    }
}

void ParseLine()
{
    if (parser.GetName(lineNum) != "Player")
    {
        playerTalking = false;
        characterName = parser.GetName(lineNum);
        dialogue = parser.GetContent(lineNum);
        pose = parser.GetPose(lineNum);
        background = parser.GetBackground(lineNum);
        position = parser.GetPosition(lineNum);
        DisplayImages();
        DisplayBackground();
    }
    else
    {
        playerTalking = true;
        characterName = "";
        dialogue = "";
        pose = 0;
        background = 1;
        position = "";
        options = parser.GetOptions(lineNum);
        CreateButtons();
    }
}

void DisplayImages()
{
    if (characterName != "")
    {
        GameObject character = GameObject.Find(characterName);

        SetSpritePositions(character);

        SpriteRenderer currSprite = character.GetComponent<SpriteRenderer>();
        currSprite.sprite = character.GetComponent<Character>().characterPoses[pose];
    }
}


void SetSpritePositions(GameObject spriteObj)
{
    if (position == "L")
    {
        spriteObj.transform.position = new Vector3(-2, 0);
    }
    else if (position == "R")
    {
        spriteObj.transform.position = new Vector3(2, 0);
    }
    else if (position == "Wolf"){
        spriteObj.transform.position = new Vector3(1, 0);
        spriteObj.transform.localScale = new Vector3(10, 10);
    }
    else if (position == "C")
    {
        spriteObj.transform.position = new Vector3(0, 0);
    }
    else if (position == "MC")
    {
        spriteObj.transform.position = new Vector3(-5, -3);
    }
    spriteObj.transform.position = new Vector3(spriteObj.transform.position.x, spriteObj.transform.position.y, 0);
}

void DisplayBackground()
{
        GameObject bgObject = GameObject.Find("Background");

        SetBackgroundScale(bgObject);
        bgObject.transform.position = new Vector3(0, 0);

        SpriteRenderer currSprite = bgObject.GetComponent<SpriteRenderer>();
        currSprite.sprite = bgObject.GetComponent<Character>().characterPoses[background];
}

void SetBackgroundScale(GameObject bgObject)
{
    if(background == 0)
    {
        bgObject.transform.localScale = new Vector3(17, 18);
    }
    else if(background == 1)
    {
        bgObject.transform.localScale = new Vector3(10, 10, -10);
    }
    else if(background == 2)
    {
        bgObject.transform.localScale = new Vector3(20, 25);
    }
    else if (background == 3)
    {
        bgObject.transform.localScale = new Vector3(10, 18);
    }
    else if (background == 4)
    {
        bgObject.transform.localScale = new Vector3(10, 14);
    }
    else if (background == 5)
    {
        bgObject.transform.localScale = new Vector3(15, 18);
    }
}

void CreateButtons()
{
    for (int i = 0; i < options.Length; i++)
    {
        GameObject button = (GameObject)Instantiate(choiceBox);
        Button b = button.GetComponent<Button>();
        ChoiceButton cb = button.GetComponent<ChoiceButton>();
        cb.SetText(options[i].Split(':')[0]);
        cb.option = options[i].Split(':')[1];
        cb.box = this;
        b.transform.SetParent(this.transform);
        b.transform.localPosition = new Vector3(0, -25 + (i * 50));
        b.transform.localScale = new Vector3(1, 1, 1);
        if (button.GetComponentInChildren<Text>().text == "")
        {
            b.image.color = new Color(0,0,0,0);
            b.transform.localPosition = new Vector3(0, -25 + (i * 50));
            b.transform.localScale = new Vector3(20, 20);
        }
        buttons.Add(b);
    }
}

void UpdateUI()
{
    if (!playerTalking)
    {
        ClearButtons();
    }
    dialogueBox.text = dialogue;
    if (characterName == "Wolf")
    {
        nameBox.text = "";
    }
    else nameBox.text = characterName;
}

void ClearButtons()
{
    for (int i = 0; i < buttons.Count; i++)
    {
        print("Clearing buttons");
        Button b = buttons[i];
        buttons.Remove(b);
        Destroy(b.gameObject);
    }
}
}
    using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;

public class DialogueParser : MonoBehaviour {

    List<DialogueLine> lines;

struct DialogueLine
{
    public string name;
    public string content;
    public int pose;
    public int background;
    public string position;
    public string[] options;

    public DialogueLine(string Name, string Content, int Pose,int bg, string Position)
    {
        name = Name;
        content = Content;
        pose = Pose;
        background = bg;
        position = Position;
        options = new string[0];
    }
}

void Start () {
    string file = "Assets/Resources/Dialogue/Dialogue";
    string sceneNum = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
    sceneNum = Regex.Replace(sceneNum, "[^0-9]", "");
    file += sceneNum;
    file += ".txt";

    lines = new List<DialogueLine>();

    LoadDialogue(file);
}

void Update () {

}

void LoadDialogue(string filename)
{
    string line;
    StreamReader r = new StreamReader(filename);

    using (r)
    {
        do
        {
            line = r.ReadLine();
            if (line != null)
            {
                string[] lineData = line.Split('|');
                if (lineData[0] == "Player")
                {
                    DialogueLine lineEntry = new DialogueLine(lineData[0], "", 0,0, "");
                    lineEntry.options = new string[lineData.Length - 1];
                    for (int i = 1; i < lineData.Length; i++)
                    {
                        lineEntry.options[i - 1] = lineData[i];
                    }
                    lines.Add(lineEntry);
                }
                else
                {
                    DialogueLine lineEntry = new DialogueLine(lineData[0], lineData[1], int.Parse(lineData[2]), int.Parse(lineData[3]), lineData[4]);
                    lines.Add(lineEntry);
                }
            }
        }
        while (line != null);
        r.Close();
    }
}

public string GetPosition(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].position;
    }
    return "";
}

public string GetName(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].name;
    }
    return "";
}

public string GetContent(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].content;
    }
    return "";
}

public int GetPose(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].pose;
    }
    return 0;
}

public int GetBackground(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].background;
    }
    return 0;
}

public string[] GetOptions(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].options;
    }
    return new string[0];
}
}
使用UnityEngine;
使用系统集合;
使用UnityEngine.UI;
使用System.Collections.Generic;
公共类DialogueManager:MonoBehavior{
对话语法分析器;
公共字符串对话,characterName;
公共int-lineNum;
内位姿;
公众背景;
串位置;
字符串[]选项;
公共场所游戏者谈话;
列表按钮=新建列表();
公共文本对话框;
公共文本名称框;
公共游戏对象选择框;
无效开始(){
对话=“不!不!请不要!”;
characterName=“MC”;
姿势=0;
背景=0;
position=“MC”;
playerTalking=false;
parser=GameObject.Find(“DialogueParser”).GetComponent();
lineNum=1;
}
无效更新(){
if(Input.touchCount>=1&&Input.GetTouch(0.phase==TouchPhase.Start | | Input.anyKeyDown&&playerTalking==false)
{
ShowDialogue();
lineNum++;
}
UpdateUI();
}
公众对话
{
重置图像();
ParseLine();
}
void ResetImages()
{
if(characterName!=“”)
{
GameObject character=GameObject.Find(characterName);
SpriteRenderer currSprite=character.GetComponent();
currSprite.sprite=null;
}
}
void ParseLine()
{
if(parser.GetName(lineNum)!=“Player”)
{
playerTalking=false;
characterName=parser.GetName(lineNum);
dialogue=parser.GetContent(lineNum);
pose=parser.GetPose(lineNum);
background=parser.GetBackground(lineNum);
position=parser.GetPosition(lineNum);
显示图像();
DisplayBackground();
}
其他的
{
playerTalking=true;
characterName=“”;
对话=”;
姿势=0;
背景=1;
位置=”;
options=parser.GetOptions(lineNum);
CreateButtons();
}
}
void DisplayImages()
{
if(characterName!=“”)
{
GameObject character=GameObject.Find(characterName);
设置PritePositions(字符);
SpriteRenderer currSprite=character.GetComponent();
currSprite.sprite=character.GetComponent().characterPoses[pose];
}
}
void setPritePositions(游戏对象spriteObj)
{
如果(位置=“L”)
{
spriteObj.transform.position=新矢量3(-2,0);
}
否则如果(位置=“R”)
{
spriteObj.transform.position=新向量3(2,0);
}
否则如果(位置==“狼”){
spriteObj.transform.position=新向量3(1,0);
spriteObj.transform.localScale=新向量3(10,10);
}
否则如果(位置=“C”)
{
spriteObj.transform.position=新向量3(0,0);
}
否则如果(位置=“MC”)
{
spriteObj.transform.position=新向量3(-5,-3);
}
spriteObj.transform.position=新矢量3(spriteObj.transform.position.x,spriteObj.transform.position.y,0);
}
void DisplayBackground()
{
GameObject bgObject=GameObject.Find(“背景”);
立根标度(bgObject);
bgObject.transform.position=新向量3(0,0);
SpriteRenderer currSprite=bgObject.GetComponent();
currSprite.sprite=bgObject.GetComponent().characterPoses[background];
}
void SetBackgroundScale(游戏对象bgObject)
{
如果(背景==0)
{
bgObject.transform.localScale=新向量3(17,18);
}
else if(背景==1)
{
bgObject.transform.localScale=新向量3(10,10,-10);
}
else if(背景==2)
{
bgObject.transform.localScale=新向量3(20,25);
}
否则如果(背景==3)
{
bgObject.transform.localScale=新向量3(10,18);
}
否则如果(背景==4)
{
bgObject.transform.localScale=新向量3(10,14);
}
否则如果(背景==5)
{
bgObject.transform.localScale=新向量3(15,18);
}
}
void CreateButtons()
{
for(int i=0;i
DialogueParser.cs

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;

public class DialogueManager : MonoBehaviour {
DialogueParser parser;

public string dialogue, characterName;
public int lineNum;
int pose;
public int background;
string position;
string[] options;
public bool playerTalking;
List<Button> buttons = new List<Button>();

public Text dialogueBox;
public Text nameBox;
public GameObject choiceBox;

void Start () {
    dialogue = "NO! N-NO! PLEASE NO!";
    characterName = "MC";
    pose = 0;
    background = 0;
    position = "MC";
    playerTalking = false;
    parser = GameObject.Find("DialogueParser").GetComponent<DialogueParser>();
    lineNum = 1;
}

void Update () {
    if (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Began || Input.anyKeyDown && playerTalking == false)
    {
        ShowDialogue();

        lineNum++;
    }

    UpdateUI();
}

public void ShowDialogue()
{
    ResetImages();
    ParseLine();
}

void ResetImages()
{
    if (characterName != "")
    {
        GameObject character = GameObject.Find(characterName);
        SpriteRenderer currSprite = character.GetComponent<SpriteRenderer>();
        currSprite.sprite = null;
    }
}

void ParseLine()
{
    if (parser.GetName(lineNum) != "Player")
    {
        playerTalking = false;
        characterName = parser.GetName(lineNum);
        dialogue = parser.GetContent(lineNum);
        pose = parser.GetPose(lineNum);
        background = parser.GetBackground(lineNum);
        position = parser.GetPosition(lineNum);
        DisplayImages();
        DisplayBackground();
    }
    else
    {
        playerTalking = true;
        characterName = "";
        dialogue = "";
        pose = 0;
        background = 1;
        position = "";
        options = parser.GetOptions(lineNum);
        CreateButtons();
    }
}

void DisplayImages()
{
    if (characterName != "")
    {
        GameObject character = GameObject.Find(characterName);

        SetSpritePositions(character);

        SpriteRenderer currSprite = character.GetComponent<SpriteRenderer>();
        currSprite.sprite = character.GetComponent<Character>().characterPoses[pose];
    }
}


void SetSpritePositions(GameObject spriteObj)
{
    if (position == "L")
    {
        spriteObj.transform.position = new Vector3(-2, 0);
    }
    else if (position == "R")
    {
        spriteObj.transform.position = new Vector3(2, 0);
    }
    else if (position == "Wolf"){
        spriteObj.transform.position = new Vector3(1, 0);
        spriteObj.transform.localScale = new Vector3(10, 10);
    }
    else if (position == "C")
    {
        spriteObj.transform.position = new Vector3(0, 0);
    }
    else if (position == "MC")
    {
        spriteObj.transform.position = new Vector3(-5, -3);
    }
    spriteObj.transform.position = new Vector3(spriteObj.transform.position.x, spriteObj.transform.position.y, 0);
}

void DisplayBackground()
{
        GameObject bgObject = GameObject.Find("Background");

        SetBackgroundScale(bgObject);
        bgObject.transform.position = new Vector3(0, 0);

        SpriteRenderer currSprite = bgObject.GetComponent<SpriteRenderer>();
        currSprite.sprite = bgObject.GetComponent<Character>().characterPoses[background];
}

void SetBackgroundScale(GameObject bgObject)
{
    if(background == 0)
    {
        bgObject.transform.localScale = new Vector3(17, 18);
    }
    else if(background == 1)
    {
        bgObject.transform.localScale = new Vector3(10, 10, -10);
    }
    else if(background == 2)
    {
        bgObject.transform.localScale = new Vector3(20, 25);
    }
    else if (background == 3)
    {
        bgObject.transform.localScale = new Vector3(10, 18);
    }
    else if (background == 4)
    {
        bgObject.transform.localScale = new Vector3(10, 14);
    }
    else if (background == 5)
    {
        bgObject.transform.localScale = new Vector3(15, 18);
    }
}

void CreateButtons()
{
    for (int i = 0; i < options.Length; i++)
    {
        GameObject button = (GameObject)Instantiate(choiceBox);
        Button b = button.GetComponent<Button>();
        ChoiceButton cb = button.GetComponent<ChoiceButton>();
        cb.SetText(options[i].Split(':')[0]);
        cb.option = options[i].Split(':')[1];
        cb.box = this;
        b.transform.SetParent(this.transform);
        b.transform.localPosition = new Vector3(0, -25 + (i * 50));
        b.transform.localScale = new Vector3(1, 1, 1);
        if (button.GetComponentInChildren<Text>().text == "")
        {
            b.image.color = new Color(0,0,0,0);
            b.transform.localPosition = new Vector3(0, -25 + (i * 50));
            b.transform.localScale = new Vector3(20, 20);
        }
        buttons.Add(b);
    }
}

void UpdateUI()
{
    if (!playerTalking)
    {
        ClearButtons();
    }
    dialogueBox.text = dialogue;
    if (characterName == "Wolf")
    {
        nameBox.text = "";
    }
    else nameBox.text = characterName;
}

void ClearButtons()
{
    for (int i = 0; i < buttons.Count; i++)
    {
        print("Clearing buttons");
        Button b = buttons[i];
        buttons.Remove(b);
        Destroy(b.gameObject);
    }
}
}
    using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;

public class DialogueParser : MonoBehaviour {

    List<DialogueLine> lines;

struct DialogueLine
{
    public string name;
    public string content;
    public int pose;
    public int background;
    public string position;
    public string[] options;

    public DialogueLine(string Name, string Content, int Pose,int bg, string Position)
    {
        name = Name;
        content = Content;
        pose = Pose;
        background = bg;
        position = Position;
        options = new string[0];
    }
}

void Start () {
    string file = "Assets/Resources/Dialogue/Dialogue";
    string sceneNum = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
    sceneNum = Regex.Replace(sceneNum, "[^0-9]", "");
    file += sceneNum;
    file += ".txt";

    lines = new List<DialogueLine>();

    LoadDialogue(file);
}

void Update () {

}

void LoadDialogue(string filename)
{
    string line;
    StreamReader r = new StreamReader(filename);

    using (r)
    {
        do
        {
            line = r.ReadLine();
            if (line != null)
            {
                string[] lineData = line.Split('|');
                if (lineData[0] == "Player")
                {
                    DialogueLine lineEntry = new DialogueLine(lineData[0], "", 0,0, "");
                    lineEntry.options = new string[lineData.Length - 1];
                    for (int i = 1; i < lineData.Length; i++)
                    {
                        lineEntry.options[i - 1] = lineData[i];
                    }
                    lines.Add(lineEntry);
                }
                else
                {
                    DialogueLine lineEntry = new DialogueLine(lineData[0], lineData[1], int.Parse(lineData[2]), int.Parse(lineData[3]), lineData[4]);
                    lines.Add(lineEntry);
                }
            }
        }
        while (line != null);
        r.Close();
    }
}

public string GetPosition(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].position;
    }
    return "";
}

public string GetName(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].name;
    }
    return "";
}

public string GetContent(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].content;
    }
    return "";
}

public int GetPose(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].pose;
    }
    return 0;
}

public int GetBackground(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].background;
    }
    return 0;
}

public string[] GetOptions(int lineNumber)
{
    if (lineNumber < lines.Count)
    {
        return lines[lineNumber].options;
    }
    return new string[0];
}
}
使用UnityEngine;
使用系统