我正在通过Unity构建一个Daydream应用程序,有一个基本的第一人称演示工作,但我之前没有在Unity上开发过。希望在应用程序中添加字符并与它们对话。我正在考虑两种方式:
1-当我接近一个角色时,会在该角色旁边出现一个对话框,并说出#34;你好"。
2-当我用指针指向一个角色时,它会说"开始对话"
在任何一种情况下,我都会有多种选择,例如。 " X"或者"你叫什么名字"等等,根据我的选择,角色会用别的东西回应,等等。我无法看到能够在标准资产中解决这个问题的东西。有没有最好的做法,围绕这个模板?如果没有任何想法/方向?
Unity 2017.3.1f1 GVR SDK:v1.130.1 Android Studio 3.0.1 Java jdk1.8.0_162.jdk Pixel 2手机 MacBook High Sierra
答案 0 :(得分:0)
按照以下步骤操作非常简单;
为角色添加一个对撞机, 并在你想要“Hello”的位置放置一个3d文本,然后添加这样的脚本;
public text HelloText = null;
void OnCollisionEnter(Collision collision)
{
HelloText.text.enabled = true;
}//Search more on google ; Unity 3d text.
根据需要创建一个立方体缩放比例,并在其中放置一个文本,如“开始对话”。将一个碰撞器添加到多维数据集和这样的脚本;
void OnMouseDown()
{
//Create dialog boxes LIKE THIS.
}
这不是完美的方式。如果你是新手,这可能是你的最佳选择。
您可以创建由立方体和文本组成的预制件。然后你可以通过脚本设置它们的值。
编辑:
创建一个空的游戏对象并将此脚本附加到它。 然后将3rdPersonController游戏对象放入空游戏对象脚本中的空游戏对象插槽
示例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AScriptName: MonoBehaviour {
public GameObject PlayerController = null;
TextMesh DialogBox = null;
void Start()
{
//Note: Attach your 3d text to your 3rdPersonController in the editor..
DialogBox = PlayerController.GetComponentInChildren(typeof(TextMesh)) as TextMesh;
DialogBox.text = "Start Conversation";
//or you can pass a string value;
//Example string text = "Start Conversation"; DialogBox.text = text;
}
}