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可能我在这里写了很多错误,但没有测试,它给你带来了什么错误?请注意,我已经意识到其中的一些,并更正它以获取“玩家”的标签,因此您需要将其附加到您的多维数据集上,而不是您的玩家上。。。