选择一个游戏对象并使用GUI.Button(EventTrigger)执行动作

阿尔萨斯

我目前正在开发策略游戏,我想使用GUI.Button对游戏对象执行动作。我正在使用射线投射和鼠标单击来选择对象,但是当我单击GUI.Button进行另一项操作时,该按钮消失了。我想使用该按钮打开另一个GUI.Box以显示一些描述。

我知道为什么按钮消失了,这是因为我在更新功能中投射了投射到按钮点击的光线,但是如何避免这种情况呢?我也知道我必须使用EventTrigger,但是我对javascript事件触发器不熟悉,我在线搜索过,但是找不到任何有用的javascript。

屏幕截图:

在此处输入图片说明

在此处输入图片说明

这是我的脚本:

@HideInInspector
var isCalled:int = 0;
@HideInInspector
var scWidth:int = 0;
@HideInInspector
var scHeight:int = 0;
function Start () {
    scWidth = Screen.width;
    scHeight = Screen.height;        
}

function Update () {
    if (Input.GetMouseButtonDown(0)) {
        var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
        var hit : RaycastHit;
        if (Physics.Raycast (ray, hit)) {
            if (hit.collider.tag == "House") {
                isCalled = 1;
            } else{
                isCalled = 0;
            }
        }
    }
}

function OnGUI(){
    if(isCalled==1)
        GUI.Button(Rect(scWidth/2,(scHeight/2)+(scHeight/4),120,120), name);
    }
}
内夫·伊格尼奇

如果我没看错,问题是当您单击按钮时,在单击按钮之前会启动射线广播,并且您选择其他对象或根本没有对象,并且按钮消失或重新出现,但是对于另一个对象,您需要做的是检查如果单击GUI,如果是,则不要投影选择对象的光线投射。这就是你要怎么做。

var selectedUI : GameObject = EventSystem.current.currentSelectedGameObject;
if (Input.GetMouseButtonDown(0) && selectedUI) {
       var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
       var hit : RaycastHit;
       if (Physics.Raycast (ray, hit)) {
           if (hit.collider.tag == "House") {
           isCalled = 1;
          } else{
           isCalled = 0;
           }
        }
}

我使用C#工作,所以我可能已经犯了一些语法错误,但是逻辑是正确的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PHP / JS执行动作

来自分类Dev

Java Struts在执行动作完成后调用另一个动作

来自分类Dev

如何在执行动作时检查另一个按钮

来自分类Dev

从行动作中选择?

来自分类Dev

在Web API中执行动作后更改返回的对象值

来自分类Dev

如果2个Sprite碰撞在Sprite Kit中,该如何执行动作?

来自分类Dev

我如何只在第一场比赛中就执行动作?

来自分类Dev

阻止执行动作

来自分类Dev

立即执行动作

来自分类Dev

使用softmax进行动作选择?

来自分类Dev

执行动作的API路由

来自分类Dev

Wordpress:如何执行动作?

来自分类Dev

ReactJS循环执行动作

来自分类Dev

JCombobox的动作在另一个动作中执行

来自分类Dev

如何在执行一个动作的同时执行另一个动作?

来自分类Dev

同时执行2个动作?游戏死机了?

来自分类Dev

我使用python创建了一个项目,该项目可以检测图像中的对象,但是我需要对输入/输出执行GUI

来自分类Dev

是否有设计模式或语言功能(c#)来有效确定一组对象是否已执行动作

来自分类Dev

使用ScalaMeter测试并行动作的性能

来自分类Dev

一个循环执行两个动作VS两个循环执行一个动作?

来自分类Dev

一个类必须是一个对象,可以是一个动作吗?

来自分类Dev

Java游戏动作执行的问题

来自分类Dev

MVC 3应用程序可以在同一服务器上的其他应用程序中执行动作

来自分类Dev

使用requestFrameAnimation制作的小型游戏(请参见代码笔)的循环执行,需要一个用户输入的命令延迟

来自分类Dev

在动画结束时执行动作

来自分类Dev

Golang获取执行动作的流程时间

来自分类Dev

uilabel可以执行动作吗

来自分类Dev

在某些Y坐标上执行动作

来自分类Dev

递归地执行一个州的单子动作

Related 相关文章

  1. 1

    使用PHP / JS执行动作

  2. 2

    Java Struts在执行动作完成后调用另一个动作

  3. 3

    如何在执行动作时检查另一个按钮

  4. 4

    从行动作中选择?

  5. 5

    在Web API中执行动作后更改返回的对象值

  6. 6

    如果2个Sprite碰撞在Sprite Kit中,该如何执行动作?

  7. 7

    我如何只在第一场比赛中就执行动作?

  8. 8

    阻止执行动作

  9. 9

    立即执行动作

  10. 10

    使用softmax进行动作选择?

  11. 11

    执行动作的API路由

  12. 12

    Wordpress:如何执行动作?

  13. 13

    ReactJS循环执行动作

  14. 14

    JCombobox的动作在另一个动作中执行

  15. 15

    如何在执行一个动作的同时执行另一个动作?

  16. 16

    同时执行2个动作?游戏死机了?

  17. 17

    我使用python创建了一个项目,该项目可以检测图像中的对象,但是我需要对输入/输出执行GUI

  18. 18

    是否有设计模式或语言功能(c#)来有效确定一组对象是否已执行动作

  19. 19

    使用ScalaMeter测试并行动作的性能

  20. 20

    一个循环执行两个动作VS两个循环执行一个动作?

  21. 21

    一个类必须是一个对象,可以是一个动作吗?

  22. 22

    Java游戏动作执行的问题

  23. 23

    MVC 3应用程序可以在同一服务器上的其他应用程序中执行动作

  24. 24

    使用requestFrameAnimation制作的小型游戏(请参见代码笔)的循环执行,需要一个用户输入的命令延迟

  25. 25

    在动画结束时执行动作

  26. 26

    Golang获取执行动作的流程时间

  27. 27

    uilabel可以执行动作吗

  28. 28

    在某些Y坐标上执行动作

  29. 29

    递归地执行一个州的单子动作

热门标签

归档