网站公告 | 全新unity3d 完整学习路线,最强课程配套、服务!详情点击
查看: 7888|回复: 18
收起左侧

[Unity3d] 我又来求助了,关于GUILayout.Button

[复制链接]

[Unity3d] 我又来求助了,关于GUILayout.Button[复制链接]

yezixuannao 发表于 2017-9-26 22:19:11 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  18 浏览:  7888
planeRotate = false;
if (GUILayout.Button(planeInfo, GUILayout.Width(100), GUILayout.Height(50)))
        {
            planeRotate = true;
            planeInfo = "停止旋转";
        }
        else
        {
            planeInfo = "旋转平面";
            planeRotate = false;
void Update () {
        if (planeRotate)
        {
            plane.transform.Rotate(0.0f, Time.deltaTime * 200.0f, 0.0f);
        }
        }

我想实现通过一个按钮控制平面的旋转与停止,但是发现只有我按下按钮的瞬间,物体旋转了一个角度,然后就又停止了,根本不需要我按停止键。难道GUILayout.Button在点下按钮的瞬间返回值自动经历了从false到true然后又返回false这么一个过程吗?希望能有大佬帮忙解惑,谢谢!!!!
+1
7897°C
18
  • luckyStar
  • admin
  • yezixuannao
  • yezixuannao
  • 寒愁微别
过: 他们
因分享而快乐,学习以自强!
luckyStar 发表于 2017-9-27 17:07:43 显示全部楼层
不会,顶一下
因分享而快乐,学习以自强!
admin 发表于 2017-9-27 17:52:21 显示全部楼层
[C#] 纯文本查看 复制代码
    bool planeRotate = false;
    string planeInfo = "开始旋转";

    void OnGUI()
    {
        if (GUILayout.Button(planeInfo, GUILayout.Width(100), GUILayout.Height(50)))
            testRotate();
    }

    void testRotate() {
        if(!planeRotate)
        {
            planeRotate = true;
            planeInfo = "停止旋转";
        }
        else
        {
            planeRotate = false;
            planeInfo = "旋转平面";
        }
    }

评分

参与人数 1泰斗币 +1 热心值 +1 收起 理由
yezixuannao + 1 + 1 赞一个!

查看全部评分

因分享而快乐,学习以自强!
yezixuannao
 楼主|
发表于 2017-9-27 20:27:45 显示全部楼层
admin 发表于 2017-9-27 17:52
[mw_shl_code=csharp,true]    bool planeRotate = false;
    string planeInfo = "开始旋转";

大佬,我试了一下,你这个代码和我的效果一样,都是点一下就转一下,然后马上就停了,不需要再按停止键
因分享而快乐,学习以自强!
yezixuannao
 楼主|
发表于 2017-9-27 20:29:51 显示全部楼层

感谢帮顶!
因分享而快乐,学习以自强!
寒愁微别 发表于 2017-9-27 23:23:40 显示全部楼层
yezixuannao 发表于 2017-9-27 20:27
大佬,我试了一下,你这个代码和我的效果一样,都是点一下就转一下,然后马上就停了,不需要再按停止键{: ...

测试过了,可行。
在公司电脑上,明天上午,我发完整项目给你。
因分享而快乐,学习以自强!
admin 发表于 2017-9-28 10:17:10 显示全部楼层
项目在附件,你下载看看。
GUIButton.zip (875.38 KB, 下载次数: 2)

评分

参与人数 1泰斗币 +1 热心值 +1 收起 理由
yezixuannao + 1 + 1 赞一个!

查看全部评分

因分享而快乐,学习以自强!
yezixuannao
 楼主|
发表于 2017-9-28 20:37:00 显示全部楼层
寒愁微别 发表于 2017-9-27 23:23
测试过了,可行。
在公司电脑上,明天上午,我发完整项目给你。

我下载了楼下大佬的代码,确实可行!!!
因分享而快乐,学习以自强!
yezixuannao
 楼主|
发表于 2017-9-28 20:42:34 显示全部楼层
admin 发表于 2017-9-28 10:17
项目在附件,你下载看看。

谢谢大佬给我这个小白的耐心解答!!!!!
我下载了你给的代码,确实可以实现持续旋转,然后我按照你的代码修改了我原先的代码。发现是GUI的原因!如果将更改Bool变量的代码写在Guilayout下面,就会出现我主题里所说的,无法持续旋转的情况。而像大佬你给的代码一样,另建一个方法拿来更改Bool变量的状态,就能实现持续旋转的情况。由此看来OnGui里面最好还是少些代码为好!
最后再次非常感谢!!!这个问题困扰我已经好几天了,现在解决了感觉好舒服啊!!!哈哈
因分享而快乐,学习以自强!
泰课_robin 发表于 2017-9-29 09:12:26 显示全部楼层
yezixuannao 发表于 2017-9-28 20:42
谢谢大佬给我这个小白的耐心解答!!!!!
我下载了你给的代码,确实可以实 ...

这是一个逻辑问题,你慢慢积累经验,就能知道。为什么有些变量是全局的有些是局部的,有些要在start中初始化,有些是在循环中创建更新,而有些是在update中实时创建,更新,消除
因分享而快乐,学习以自强!
thomaslee 发表于 2017-9-29 10:46:28 显示全部楼层
帮忙顶一下,同求答案
因分享而快乐,学习以自强!
admin 发表于 2017-9-29 12:24:43 显示全部楼层
thomaslee 发表于 2017-9-29 10:46
帮忙顶一下,同求答案

答案不是在7楼提了嘛,还有项目下载
因分享而快乐,学习以自强!
yezixuannao
 楼主|
发表于 2017-9-29 18:03:05 显示全部楼层
泰课_robin 发表于 2017-9-29 09:12
这是一个逻辑问题,你慢慢积累经验,就能知道。为什么有些变量是全局的有些是局部的,有些要在start中初 ...

感觉好复杂
因分享而快乐,学习以自强!
泰课_robin 发表于 2017-9-29 20:20:43 显示全部楼层

慢慢来,可能你以前不是开发人员,或者还是新人
因分享而快乐,学习以自强!
yezixuannao
 楼主|
发表于 2017-9-30 15:35:09 显示全部楼层
泰课_robin 发表于 2017-9-29 20:20
慢慢来,可能你以前不是开发人员,或者还是新人

嗯嗯,我才刚开始,自学了一个多月
因分享而快乐,学习以自强!
12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 浙ICP 备 13006852号-15 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ