【问题标题】:How to show GUI button once the first person collides with an object?一旦第一个人与物体碰撞,如何显示 GUI 按钮?
【发布时间】:2015-11-10 00:34:56
【问题描述】:

我正在为孩子们创建一个教育性的虚拟演练,当我的第一个人在一个立方体/对象中碰撞时如何显示一个按钮,我遇到了一个小问题。

这是我的代码:

#pragma strict
var timer : int;
var move : GUI;

function Start () {

}

timer = Time.deltaTime;

function OnCollisionEnter (obj: Collision) {
    if (obj.collider.name == "Cube")
    {
        GUI.Button(Rect(0,0,200,100), 'Button');
    }
}

【问题讨论】:

  • 它现在甚至可以正常工作并显示按钮?我认为 GUI 组件可以在 OnGUI 函数中调用,否则 Unity 可能会抛出异常......
  • 仍然没有显示任何按钮。我尝试了很多方法,但我很失望@Frohlich顺便说一句,谢谢
  • 您使用哪个版本的 Unity? > 5< 5?

标签: unity3d unityscript


【解决方案1】:

我不太了解 Unity 脚本,也不知道您的代码是否以这种方式工作,或者您粘贴的代码与您的组件上已有的代码有些不同,所以我将用 C# 编写一个方法但您可以轻松适应美国:

public bool showButton = false
public Rect buttonRect = new Rect(0, 0, 200, 100);

void OnGUI() {
    if(show) {
        if(GUI.Button(buttonRect, "Button") {
            // do what you need here...
            show = false; //after click and do what you need hide the button again
        }
    }
}

void OnCollisionEnter(Collision collision) {
    if (collision.gameObject.tag == "Player") {
        show = true;
    }
}

禁用对撞机上的任何触发器,我认为如果 OnTrigger 进入 OnCollisionEnter 将永远不会被调用(您可以轻松调试它以授予您的 OnCollisionEnter 正在被调用)...

注意:我已经调整了“播放器”标签,所以你需要将它附加到你的立方体上,如果你想在你的播放器上使用它,只需在你的立方体上放一些你喜欢的标签想测试一下(我没有用name是因为我真的不知道unity会怎么对待,一般都是用tag来做这种碰撞测试)...

ps:我现在无法测试它,所以如果它仍然抛出错误,请将它们粘贴在这里。

【讨论】:

  • 这段代码有一些错误。我尝试修复它,但没有发生任何事情@Frohlich
  • 可能有很多错误我写在这里并没有测试,它给你带来了什么错误?请注意,我已经意识到其中一些并更正它以获取“播放器”的标签,因此您需要将其附加到您的立方体而不是播放器上...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多