我想问一个问题。我怎样才能创建类似这个链接的聊天背景?
使用自动文本(文本将每次自动逐个输入文字)。
问题是,我已经完成了与上图类似的聊天背景,但是透明背景,当我尝试用文本填充透明背景时,文本没有显示。
这是透明背景上的图像:
这是我一直在使用的代码(自动文本):
using UnityEngine;
using System.Collections;
public class AutoText : MonoBehaviour
{
public float letterPause = 0.5f; // Define and set the pause for each letters
public AudioClip sound = null; // For the sound
public GUISkin customLabel = null; // For the label
public static string message = "Help...! Help...!" + "\n" + "Somebody...! Please Help Me...!"; // The message
private void Start()
{
StartCoroutine(TypedText());
}
private void OnGUI()
{
GUI.Label(new Rect((Screen.width / 2) - 250, (Screen.height / 2) - 200, 500, 500), message, customLabel.customStyles[0]);
}
IEnumerator TypedText()
{
// Loop through the message
foreach (char letter in message.ToCharArray())
{
// Set the gui text to be same with message
guiText.text += letter;
// If sound available
if (sound)
{
// Play it on each words
audio.PlayOneShot(sound);
// Go back to the if statement
yield return 0;
}
// Each letters will be shown for how many seconds delay
yield return new WaitForSeconds(letterPause);
}
}
}
对于文本本身,我在统一编辑器中创建了一个gui文本和gui skin,并将脚本放在上面,如下图所示:
此外,当我尝试将聊天背景设置为不透明时,文本显示在聊天背景后面(因此文本未显示)
非常感谢先生回答这个问题并感兴趣
答案 0 :(得分:1)
你不能尝试在Text后面绘制纹理吗?)?
首先将纹理添加为脚本中的变量
public Texture2D Background;
然后将OnGUI更改为
private void OnGUI()
{
GUI.DrawTexture(new Rect((Screen.width / 2) - 250, (Screen.height / 2) - 200, 500, 500), Background);
GUI.Label(new Rect((Screen.width / 2) - 250, (Screen.height / 2) - 200, 500, 500), message, customLabel.customStyles[0]);
}
不要忘记先在编辑器中指定背景纹理;还有关于导入的纹理。将透明度设置为Alpha通道。
如果不对此进行测试,我几乎可以保证它能够正常工作: - )