Unity3d 当第一个人与对象发生碰撞时,如何显示GUI按钮?

Unity3d 当第一个人与对象发生碰撞时,如何显示GUI按钮?,unity3d,unityscript,Unity3d,Unityscript,我正在为孩子们创建一个教育性的虚拟漫游,我有一个小问题,就是当我的第一个人在立方体/对象中碰撞时,如何显示按钮 这是我的密码: #pragma strict var timer : int; var move : GUI; function Start () { } timer = Time.deltaTime; function OnCollisionEnter (obj: Collision) { if (obj.collider.name == "Cube") {

我正在为孩子们创建一个教育性的虚拟漫游,我有一个小问题,就是当我的第一个人在立方体/对象中碰撞时,如何显示按钮

这是我的密码:

#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');
    }
}

我对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进入OnCollisionCenter,将永远不会调用它(您可以轻松地调试它以允许调用OnCollisionCenter)

注意:我已经调整为获得“玩家”标签,所以你需要将其附加到你的多维数据集上,如果你想在你的玩家上使用它,只需在你的多维数据集上放置一些你想测试的标签(我没有使用名称,因为我真的不知道unity会如何处理它,通常它是用来进行此类碰撞测试的标签)


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

它甚至可以正常工作,现在显示按钮?我认为GUI组件可以在OnGUI函数内部调用,或者Unity可能会抛出异常……但仍然没有显示任何按钮。我尝试了很多方法,但是我很失望@Frohlich顺便问一下,谢谢你你使用的是哪个版本的Unity<代码>>5或
<5
?此代码中有一些错误。我试图修复它,但是什么也没发生@frohlich可能我在这里写了很多错误,但没有测试,它给你带来了什么错误?请注意,我已经意识到其中的一些,并更正它以获取“玩家”的标签,因此您需要将其附加到您的多维数据集上,而不是您的玩家上。。。