"using System.Collections; \nusing System.Collections.Generic; \nusing UnityEngine; \nusing UnityEngine.UI; \nusing DG.Tweening; \npublic class Dialoguemanager : MonoBehaviour \n{ \n\tpublic static Dialoguemanager instance; \n\tpublic GameObject dialogueBox;//显示或隐藏对话窗口 \n\tpublic Text dialogueText, nameText;//对话窗口的输出文字和对话者的名字 \n\tpublic Image characterImage; \n\tpublic Image backimage; \n\n\t\n\t\n\t[TextArea(1, 3)]//保证输入框文字不止一行 \n\tpublic string[] dialogueLines;//多条对话的数组 \n\n\t[SerializeField] private int currentLine;//追踪对话窗口在输出哪一行的文字 \n\n\tprivate bool isScrolling; \n\t[SerializeField] private float textSpeed; \n\n\t\n\t\n\tprivate void Awake()//单例 \n\t{ \n\t\tif(instance == null) \n\t\t{ \n\t\t\tinstance = this; \n\t\t} \n\t\telse \n\t\t{ \n\t\t\tif(instance != this) \n\t\t\t{ \n\t\t\t\tDestroy(gameObject); \n\t\t\t} \n\t\t\n\t\t} \n\t\tDontDestroyOnLoad(gameObject); \n\t} \n\n\t// Start is called before the first frame update \n\tvoid Start() \n\t{ \n\t\tdialogueText.text = dialogueLines[currentLine];//我懒了电脑能自己写注释吗 \n\t} \n\n\t// Update is called once per frame \n\tvoid Update() \n\t{ \n\t\tif (dialogueBox.activeInHierarchy) \n\t\t{ \n\t\t\n\t\t\tif (Input.GetMouseButtonUp(0))//按下并且松开鼠标左键后 \n\t\t\t{ \n\t\t\t\tif (isScrolling == false) { \n\t\t\t\tcurrentLine++;//跳转到下一行 \n\t\t\t\tif (currentLine < dialogueLines.Length) \n\t\t\t\t{ \n\t\t\t\t\tCheckName(); \n\t\t\t\t\tCheckImage(); \n\t\t\t\t\tCheckBackImage(); \n\t\t\t\t\t//dialogueText.text = dialogueLines[currentLine]; \n\t\t\t\t\tStartCoroutine(ScrollingText()); \n\t\t\t\t\tFindObjectOfType().canMove = false; \n\t\t\t\t} \n\t\t\t\telse \n\t\t\t\t{ \n\t\t\t\t\tdialogueBox.transform.DOScale(Vector3.zero,0.3f) \n\t\t\t\t\t\t.OnComplete(() => \n\t\t\t\t\t\t{ \n\t\t\t\t\t\t\tdialogueBox.SetActive(false); \n\t\t\t\t\t\t}); \n\t\t\t\t\t\tFindObjectOfType().canMove = true; \n\t\t\t\t\t\tFindObjectOfType().isOver = true; \n\t\t\t\t\t}//如果对话进行完毕则关闭窗口 \n\t\t\t\t} \n\t\t\t} \n\t\t} \n\t} \n\t//插入人物名称 \n\tpublic void CheckName() { \n\t\tif (dialogueLines[currentLine].StartsWith("n-")) \n\t\t{ \n\t\t\tnameText.text = dialogueLines[currentLine].Replace("n-", ""); \n\t\t\tcurrentLine++; \n\t\t\tFindObjectOfType().canMove = false; \n\t\t} \n\t\t\n\t} \n\t//插入人物立绘 \n\tpublic void CheckImage() \n\t{ \n\t\tif (dialogueLines[currentLine].StartsWith("ch")) \n\t\t{ \n\t\t\tcharacterImage.sprite = Resources.Load(dialogueLines[currentLine]); \n\t\t\tcurrentLine++; \n\t\t\tFindObjectOfType().canMove = false; \n\t\t} \n\t\n\t} \n\tpublic void CheckBackImage() \n\t{ \n\t\tif (dialogueLines[currentLine].StartsWith("bc")) \n\t\t{ \n\t\t\tbackimage.sprite = Resources.Load(dialogueLines[currentLine]); \n\t\t\tbackimage.color = new Color(1, 1, 1); \n\t\t\tbackimage.DOFade(1, 1); // 淡入时间为1秒,根据需要可以调整 \n\t\t\tcurrentLine++; \n\t\t\tFindObjectOfType().canMove = false; \n\t\t} \n\t} \n\n\tprivate IEnumerator ScrollingText() \n\t{ \n\t\tisScrolling = true; \n\t\tdialogueText.text = ""; \n\t\tbool isRichTextTag = false; \n\t\tstring dialogueLine = dialogueLines[currentLine]; \n\t\tstring coloredText = ""; \n\n\t\tfor (int i = 0; i < dialogueLine.Length; i++) \n\t\t{ \n\t\t\tif (dialogueLine[i] == '[') \n\t\t\t{ \n\t\t\t\tisRichTextTag = true; \n\t\t\t\tcontinue; \n\t\t\t} \n\t\t\telse if (dialogueLine[i] == ']') \n\t\t\t{ \n\t\t\t\tisRichTextTag = false; \n\t\t\t\tcontinue; \n\t\t\t} \n\t\t\n\t\t\tif (isRichTextTag) \n\t\t\t{ \n\t\t\t\tcoloredText += "<color=#F16F8D>" + dialogueLine[i] + ""; \n\t\t\t} \n\t\t\telse \n\t\t\t{ \n\t\t\t\tcoloredText += dialogueLine[i]; \n\t\t\t} \n\t\t\n\t\t\tdialogueText.text = coloredText; \n\t\t\tyield return new WaitForSeconds(textSpeed); \n\t\t} \n\t\n\t\tisScrolling = false; \n\t} \n\tpublic void ShowDialogue(string[] _newLines)//用来调用的方法 \n\t{ \n\t\tdialogueLines = _newLines; \n\t\tcurrentLine = 0; \n\t\tCheckName(); \n\t\tCheckImage(); \n\t\tCheckBackImage(); \n\t\t//dialogueText.text = dialogueLines[currentLine]; \n\t\tStartCoroutine(ScrollingText()); \n\t\tdialogueBox.SetActive(true); \n\t\tdialogueBox.transform.localScale = Vector3.zero; \n\t\tdialogueBox.transform.DOScale(Vector3.one, 0.5f).SetEase(Ease.OutBack); \n\t\n\t\tFindObjectOfType().canMove = false; \n\t} \n} \nusing System.Collections; \nusing System.Collections.Generic; \nusing UnityEngine; \nusing UnityEngine.UI; \n\npublic class Talkable : MonoBehaviour \n{ \n\tprivate bool hasTriggered = false; \n\t[SerializeField] private bool isEntered; \n\t[TextArea(1, 3)] \n\tpublic string[] lines; \n\t\n\tprivate void OnTriggerEnter2D(Collider2D ohther)//判断是否接触 \n\t{ \n\t\tif (ohther.CompareTag("Player")) \n\t\t{ \n\t\t\tisEntered = true; \n\t\t} \n\t\t \n\t} \n\tprivate void OnTriggerExit2D(Collider2D other) \n\t{ \n\t\tisEntered = false; \n\t} \n\t// Start is called before the first frame update \n\tvoid Start() \n\t{ \n\t\t\n\t} \n\n\t// Update is called once per frame \n\tvoid Update() \n\t{ \n\t\tif (!hasTriggered) \n\t\t\t{ \n\t\t\t\tif (isEntered && Dialoguemanager.instance.dialogueBox.activeInHierarchy == false) \n\t\t\t\t{ \n\t\t\t\t\thasTriggered = true; \n\t\t\t\t\tDialoguemanager.instance.ShowDialogue(lines);//他奶奶的不想写注释,总之这样这样就调用对话方法 \n\t\t\t\t\t\n\t\t\t\t} \n\t\t\t} \n\t\t\n\t\t\t\n\t\t\n\t} \n\t\n} \n这是我写的对话代码,它挂在一个物体上时是正常的,但是挂在另一个物体上时却说没有实例化,究竟是怎么回事