按下按钮时循环播放功能? Unity3d C#

2023-12-11

所以,我有一个对象。当我按下旋转按钮时,我希望它旋转。当我按下停止按钮时,我希望它停止。

当它处于 void Update 中时它旋转得很好,但是当它处于它自己的函数中时,它只执行一次。我尝试使用循环但仍然没有运气。有人可以帮我吗?

Code C#:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class spin : MonoBehaviour
{
    public float speed = 500f;
    public Button starter;
    public Button stopper;

    int testing = 200;

    void Start () {

        Button btn = starter.GetComponent<Button> ();
        Button butn = stopper.GetComponent<Button> ();

        butn.onClick.AddListener(FidgetSpinnerStop);
        btn.onClick.AddListener(FidgetSpinnerStart);
    }

    void FidgetSpinnerStart ()
    {
        for (int i = 0; i < testing; i++) {
            transform.Rotate (Vector3.up, speed * Time.deltaTime);
            Debug.Log ("Test: " + i);
        }
    }

    void FidgetSpinnerStop ()
    {
        transform.Rotate (Vector3.up, Time.deltaTime);
    }
}

提前致谢!


for 循环未按预期工作,因为您没有等待帧。基本上,它将在一帧中完成所有旋转,直到最后旋转你才会看到变化。等待一帧就可以完成yield return null;这需要一个协程函数。

这最好用协程来完成。您可以将布尔变量与协程一起使用,也可以只使用StartCoroutine and StopCoroutine。单击开始按钮时启动旋转对象的协程,然后单击停止按钮时停止协程。

public float speed = 500f;
public Button starter;
public Button stopper;
bool isSpinning = false;

IEnumerator spinnerCoroutine;

void Start()
{
    //The spin function
    spinnerCoroutine = spinCOR();

    Button btn = starter.GetComponent<Button>();
    Button butn = stopper.GetComponent<Button>();

    butn.onClick.AddListener(FidgetSpinnerStop);
    btn.onClick.AddListener(FidgetSpinnerStart);
}

IEnumerator spinCOR()
{
    //Spin forever untill FidgetSpinnerStop is called 
    while (true)
    {
        transform.Rotate(Vector3.up, speed * Time.deltaTime);
        //Wait for the next frame
        yield return null;
    }
}

void FidgetSpinnerStart()
{
    //Spin only if it is not spinning
    if (!isSpinning)
    {
        isSpinning = true;
        StartCoroutine(spinnerCoroutine);
    }
}

void FidgetSpinnerStop()
{
    //Stop Spinning only if it is already spinning
    if (isSpinning)
    {
        StopCoroutine(spinnerCoroutine);
        isSpinning = false;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按下按钮时循环播放功能? Unity3d C# 的相关文章

  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 更新外键值

    我有一个数据库应用程序 其中的组建模如下 TABLE Group group id integer primary key group owner id integer TABLE GroupItem item id integer pri
  • Android 传感器:getRotationMatrix() 返回错误值,为什么?

    我开始使用这个功能已经过去几天了 但还没有成功获得有效的结果 我想要的是基本上将加速度矢量从设备坐标系转换为现实世界坐标 我知道这是可能的 因为我有相对坐标的加速度 并且我知道设备在现实世界系统中的方向 阅读 Android 开发人员似乎使
  • 从 Angular 4 中的不同包导入模块

    这是一个概念性问题 我对 Angular 和 npm 都是绝对的初学者 所以这肯定是一个基本问题 但我一直在寻找答案 但没有找到答案 我想在开始项目之前做一些概念验证 我想要一个名为 Imported 的包 并在名为 Importer 的包
  • kubernetes 中的 coredns crashloopbackoff

    我已经设置了kubernetes in ubuntu 16 04 我使用的是kube版本1 13 1并使用 weave 进行联网 我已经使用以下方法初始化了集群 sudo kubeadm init token ttl 0 apiserver
  • 使用 apache poi api 创建 Word 文档时,如何添加 X of Y 格式的页码?

    POI API 中是否指定了任何方法来获取总页数 我可以在文档的页脚中添加页码 但无法添加总页数值 页数Word取决于很多因素 例如字体大小 段落顶部 底部边距和填充 打印机设置 手动插入的分页符等 所以不能直接存到文件中 它将在运行时计算
  • 如何在信号集线器上缓冲消息并在正确的客户端出现时发送它们?

    我有两种类型的客户端连接我的 signalR 服务器 ASP NET Core 其中一些是发送者 一些是接收者 我需要将消息从发送者路由到接收者 这不是问题 但是当没有接收者时 我需要以某种方式缓冲消息而不丢失它们 可能最好的是某种单例类中
  • 将 :after 与 :hover 结合起来

    我想结合 after with hover在CSS 或任何其他伪选择器 中 我基本上有一个清单和带有selected类具有使用应用的箭头形状 after 我希望对于那些悬停在其上方但无法完全发挥作用的对象也是如此 这是代码 alertlis
  • 如何使用compare + je计算匹配项?

    我正在编写一个代码来计算字符串中有多少个单词 如何使用 je 增加寄存器 例如 cmp a bx 1 00h je inc cx je是一个有条件的jump 与 ARM 不同 x86 无法根据任意条件直接预测另一条指令 没有一条机器指令可以
  • 获取div标签特殊属性的值

    如果下一个命令 console log document getElementById container prints div div 为什么下一个命令 console log document getElementById contai
  • Matplotlib 绘制配对图?

    昨天我发布了这个 使用 DataFrame 矩阵的相关散点图 因为我的英语在技术方面不太好 所以我很难解释我的问题是什么 我试图绘制一个pairplot使用此相关数据 https i stack imgur com uJvG1 png oz
  • 更改android开发设备id

    我想将多个 Android 设备连接到同一台机器并通过 adb 管理它们 不幸的是 某些 Android 型号向 adb 显示相同的开发设备 ID 有没有办法改变开发设备ID adb devices List of devices atta
  • 如何在 Utf-8 -> php 脚本 -> mysql 中执行 HTTP POST

    我正在使用 Delphi 7 和 ICS 组件与 php 脚本通信并在 mysql 数据库中插入一些数据 如何使用 http post 发布 unicode 数据 使用 tnt 控件中的 utf8encode 后 我将其发布到 PHP 脚本
  • 如何用 EditText 中的图像替换字符串?

    我目前正在开发一个简单的聊天应用程序 我想在这个应用程序中添加表情符号功能 我已经有一个从其他用户接收字符串的函数 我想要的是 如果用户发送的文本包含像 D 或 p 这样的字符序列 我希望它们被更改为表情符号 我该如何实现这个功能呢 我想要
  • 为什么 `sched_setscheduler()` 需要 root 权限?

    为什么sched setscheduler 需要root权限吗 我正在编写一些受益于设置 SCHED FIFO 的代码 但如果我使用 sched setscheduler 我现在必须要求此进程以 root 身份运行 为什么不允许sched
  • Tkinter:获取屏幕文本单位宽度。 (不是像素)

    我正在使用 Tkinter 为应用程序设计 UI 我正在使用网格几何形状 在指定按钮宽度 或任何小部件宽度 时 我意识到宽度应该以文本单位而不是像素指定 因为我想让它独立于平台和屏幕尺寸 有没有办法获得最大文本单元宽度 这样我就可以在此基础
  • Win32 的 FindWindow() 可以找到具有确切标题的特定窗口,但是“try.bat - 记事本”呢?

    Win32 s FindWindow 可以找到一个标题为 Untitled Notepad 的窗口 但是如果我只想找到一个记事本窗口但不知道标题栏上的它是 try bat Notepad 还是其他文件名怎么办 看来如果title传入NULL
  • Java,获取两个日期之间的天数

    在java中 我想获取两个日期之间的天数 不包括这两个日期 例如 如果第一次约会 11 November 2011第二个日期 13 November 2011那么应该是1 这是我正在使用但不起作用的代码 secondDate and fir
  • 从 JavaScript 中的对象获取值[重复]

    这个问题在这里已经有答案了 我有这个对象 var data id 1 second abcd 这些是来自表单的值 我将其传递给函数进行验证 如果上述属性存在 我们可以通过以下方式获取它们的值data id and data second 但
  • Knit2html 未复制 R Studio 中 Knit HTML 按钮的功能

    我正在尝试在 Ubuntu 10 04 中编写一个 Bash 脚本 该脚本打开一个导出 CSV 的 Python 文件 然后运行以下 Rscript 目的是从 Dashboard Rmd 导出带有绘图的 HTML require knitr
  • 按下按钮时循环播放功能? Unity3d C#

    所以 我有一个对象 当我按下旋转按钮时 我希望它旋转 当我按下停止按钮时 我希望它停止 当它处于 void Update 中时它旋转得很好 但是当它处于它自己的函数中时 它只执行一次 我尝试使用循环但仍然没有运气 有人可以帮我吗 Code