VR 中的 OnGUI 不显示
OnGUI in VR not showing
我添加了以下行以在场景的左上角显示一个简单的 timer
,这当然有效,但是当我勾选 Virtual Reality Supported
复选框并放上一个 Oculus Rift,它就消失了。
void OnGUI()
{
GUI.Label(new Rect(10, 10, 100, 20), Time.time.ToString());
}
我错过了什么?我还应该做些什么来解决这个问题?
OnGUI
在 VR 中不起作用。你必须使用 world space canvas UI.
OnGUI() 在 VR 中不起作用。而是使用世界 space canvas UI.
我为 Gear-VR 做了以下操作。
将 canvas(或包含 "Canvas" 组件的其他 UI 元素)添加到场景中。将渲染模式设置为 World Space。这可以在 UI Canvas 对象的渲染模式下拉列表中找到:
我最终选择了 800 x 600 canvas。
对于计时器本身,我使用了 Time.deltaTime
。
这是我的整个 PlayerController
脚本:
void Start ()
{
timeLeft = 5;
rb = GetComponent<Rigidbody>();
count = 0;
winText.text = "";
SetCountText ();
}
void Update() {
if (gameOver) {
if (Input.GetMouseButtonDown(0)) {
Application.LoadLevel(0);
}
} else {
timeLeft -= Time.deltaTime;
timerText.text = timeLeft.ToString("0.00");
if (timeLeft < 0) {
winner = false;
GameOver(winner);
}
}
}
void GameOver(bool winner) {
gameOver = true;
timerText.text = "-- --";
string tryAgainString = "Tap the touch pad to try again.";
if (!winner) { // case A
winText.text = "Time's up.\n" + tryAgainString;
}
if (winner) { // case B
winText.text = "Well played!\n" + tryAgainString;
}
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Mouse X");
float moveVertical = Input.GetAxis ("Mouse Y");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * speed);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag ( "Pick Up")){
other.gameObject.SetActive (false);
count = count + 1;
SetCountText ();
if (!gameOver) {
timeLeft += 3;
}
}
}
void SetCountText ()
{
if (!gameOver) {
countText.text = "Count: " + count.ToString ();
}
if (count >= 12) {
winner = true;
GameOver(winner);
}
}
我添加了以下行以在场景的左上角显示一个简单的 timer
,这当然有效,但是当我勾选 Virtual Reality Supported
复选框并放上一个 Oculus Rift,它就消失了。
void OnGUI()
{
GUI.Label(new Rect(10, 10, 100, 20), Time.time.ToString());
}
我错过了什么?我还应该做些什么来解决这个问题?
OnGUI
在 VR 中不起作用。你必须使用 world space canvas UI.
OnGUI() 在 VR 中不起作用。而是使用世界 space canvas UI.
我为 Gear-VR 做了以下操作。
将 canvas(或包含 "Canvas" 组件的其他 UI 元素)添加到场景中。将渲染模式设置为 World Space。这可以在 UI Canvas 对象的渲染模式下拉列表中找到:
我最终选择了 800 x 600 canvas。
对于计时器本身,我使用了 Time.deltaTime
。
这是我的整个 PlayerController
脚本:
void Start ()
{
timeLeft = 5;
rb = GetComponent<Rigidbody>();
count = 0;
winText.text = "";
SetCountText ();
}
void Update() {
if (gameOver) {
if (Input.GetMouseButtonDown(0)) {
Application.LoadLevel(0);
}
} else {
timeLeft -= Time.deltaTime;
timerText.text = timeLeft.ToString("0.00");
if (timeLeft < 0) {
winner = false;
GameOver(winner);
}
}
}
void GameOver(bool winner) {
gameOver = true;
timerText.text = "-- --";
string tryAgainString = "Tap the touch pad to try again.";
if (!winner) { // case A
winText.text = "Time's up.\n" + tryAgainString;
}
if (winner) { // case B
winText.text = "Well played!\n" + tryAgainString;
}
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Mouse X");
float moveVertical = Input.GetAxis ("Mouse Y");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * speed);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag ( "Pick Up")){
other.gameObject.SetActive (false);
count = count + 1;
SetCountText ();
if (!gameOver) {
timeLeft += 3;
}
}
}
void SetCountText ()
{
if (!gameOver) {
countText.text = "Count: " + count.ToString ();
}
if (count >= 12) {
winner = true;
GameOver(winner);
}
}