在unity3d的聊天背景

时间:2014-11-26 10:25:41

标签: c# unity3d

我想问一个问题。我怎样才能创建类似这个链接的聊天背景?

Link

使用自动文本(文本将每次自动逐个输入文字)。

问题是,我已经完成了与上图类似的聊天背景,但是透明背景,当我尝试用文本填充透明背景时,文本没有显示。

这是透明背景上的图像:

enter image description here

这是我一直在使用的代码(自动文本):

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,并将脚本放在上面,如下图所示:

enter image description here

此外,当我尝试将聊天背景设置为不透明时,文本显示在聊天背景后面(因此文本未显示)

非常感谢先生回答这个问题并感兴趣

1 个答案:

答案 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通道。

如果不对此进行测试,我几乎可以保证它能够正常工作: - )