在 Unity VR 中查看游戏对象时显示文本
Displaying a text when looking on a GameObject in Unity VR
我正在尝试使用 Google VR 资产进行统一,这很简单,我已经在我的项目中构建了大部分内容。
我只有一个问题,我找不到向玩家显示文本的方法...
在我的项目中,用户绕着模型走动,当他查看模型的特定部分时,会弹出一个包含正确信息的 window。
我试过使用OnGui功能,但是没有用...
你知道怎么做吗?
您必须使用世界-space canvas 或 3D 文本。您可能还需要一些广告牌(面向用户的文本)。
我经常为此使用这个助手(只需拖到一个新的游戏对象):
using UnityEngine;
[RequireComponent(typeof(TextMesh))]
[RequireComponent(typeof(MeshRenderer))]
[ExecuteInEditMode]
public class Billboarded3dText : MonoBehaviour {
public bool yawOnly = false;
public float minimalViewDistance = 0.5f;
private MeshRenderer meshRenderer;
private TextMesh textMesh;
private void OnEnable()
{
meshRenderer = GetComponent<MeshRenderer>();
textMesh = GetComponent<TextMesh>();
}
private void LateUpdate()
{
var cam = Camera.main;
if (cam == null) return;
var lookDir = transform.position - cam.transform.position;
if (yawOnly) lookDir.y = 0;
if(Vector3.SqrMagnitude(lookDir) < minimalViewDistance)
{
meshRenderer.enabled = false;
}
else
{
meshRenderer.enabled = true;
transform.rotation = Quaternion.LookRotation(lookDir);
}
}
}
我正在尝试使用 Google VR 资产进行统一,这很简单,我已经在我的项目中构建了大部分内容。
我只有一个问题,我找不到向玩家显示文本的方法...
在我的项目中,用户绕着模型走动,当他查看模型的特定部分时,会弹出一个包含正确信息的 window。
我试过使用OnGui功能,但是没有用...
你知道怎么做吗?
您必须使用世界-space canvas 或 3D 文本。您可能还需要一些广告牌(面向用户的文本)。
我经常为此使用这个助手(只需拖到一个新的游戏对象):
using UnityEngine;
[RequireComponent(typeof(TextMesh))]
[RequireComponent(typeof(MeshRenderer))]
[ExecuteInEditMode]
public class Billboarded3dText : MonoBehaviour {
public bool yawOnly = false;
public float minimalViewDistance = 0.5f;
private MeshRenderer meshRenderer;
private TextMesh textMesh;
private void OnEnable()
{
meshRenderer = GetComponent<MeshRenderer>();
textMesh = GetComponent<TextMesh>();
}
private void LateUpdate()
{
var cam = Camera.main;
if (cam == null) return;
var lookDir = transform.position - cam.transform.position;
if (yawOnly) lookDir.y = 0;
if(Vector3.SqrMagnitude(lookDir) < minimalViewDistance)
{
meshRenderer.enabled = false;
}
else
{
meshRenderer.enabled = true;
transform.rotation = Quaternion.LookRotation(lookDir);
}
}
}