系统条件

95次阅读
没有评论

共计 4549 个字符,预计需要花费 12 分钟才能阅读完成。

系统条件描述

本节描述了 Construct 内置的 System 对象中的所有条件。它们按照“添加条件”对话框中出现的顺序列出。

角度

注意,Construct 中的角度从 0 度开始,面向右侧,并顺时针增加。

  • Is between angles
    如果给定的角度在另外两个角度之间(以度为单位),则为 True。前两个角度必须按顺时针顺序排列。也就是说,X 在 0 到 45 度之间为真,如果 X 在 45 度区域内;但 X 在 45 到 0 度之间为真,如果 X 在从 45 度通过 0 度的 315 度区域内。第一个角度是包含的,但第二个角度是排除的,以确保相邻范围得到正确处理。
  • Is clockwise from
    如果给定的角度在另一个角度顺时针方向 180 度或更少,则为 True,或者换句话说,如果它从 Angle 2 到 Angle 1 的方向是顺时针的。反转以测试是否逆时针。例如,45 度是从 0 度顺时针的,但 0 度是从 45 度逆时针的。Angle 1 是要测试的角度,Angle 2 是参考角度,用于测试 Angle 1 是否从其顺时针。
  • Is within angle
    如果一个角度在另一个角度的若干度范围内,则为 True。这比测试一个角度是否恰好等于一个角度更可靠,例如,X 在 90 度的 0.5 度范围内可能比 X 等于 90 度更好,因为有许多情况下一个角度可能非常接近但不完全等于 90 度。

通用

  • 比较两个值
    将任意两个表达式(可以是数字或文本)相互比较。它们可以作为相等、不相等、小于、小于或等于、大于或大于或等于进行比较。
  • 评估表达式
    如果给定的表达式是一个非零数字或非空字符串,则为 True。这对于布尔表达式很有用,如 score < 0 | health < 0。
  • 每 tick
    一个总是为真的条件。单独使用,这与每次检查时运行的效果相同,大约每秒 60 次,具体取决于设备;有关事件如何工作的更多信息,请参阅。在其他条件下添加 Every tick 是多余的,完全没有效果。
  • Is between values
    测试一个数字是否在两个值之间(大于或等于较低值且小于或等于较高值)。
  • Is group active
    测试一组事件是处于活动状态还是非活动状态。使用组的名称来标识它。
  • Is number NaN
    测试一个数字是否等于 NaN(不是一个数字),这是一个特殊的值,由无法表示为实数的计算返回,例如 - 1 的平方根。
  • Is value type
    检查一个值是数字还是字符串。
  • Object UID exists
    测试具有给定唯一 ID(UID)的对象是否存在。有关 UID 的更多信息,请参阅实例。
  • Test regex
    测试给定字符串是否与带有标志的正则表达式匹配。这仅返回 true 或 false 结果,因此要更高级地使用正则表达式,请参阅 Regex… 系统表达式。

全局和局部变量

  • Compare variable
    比较数字或文本类型事件变量的值(全局变量或作用域内的局部变量)。比较可以是相等、不相等、小于、小于或等于、大于或大于或等于。
  • Is boolean set
    测试布尔事件变量是否设置为 true。要测试它是否为 false,反转条件。

图层

  • Compare opacity
    比较图层的不透明度(或半透明性),从 0(透明)到 100(不透明)。图层的不透明度不能超出此范围。
  • Layer is empty
    测试图层当前是否有零个实例。这计算了图层上的任何对象,所以即使一个实例远离视口也会使此条件为假。
  • Layer is HTML
    测试图层当前是否设置为 HTML 图层。有关 HTML 层的更多信息,请参阅 HTML 层。
  • Layer is interactive
    测试图层当前是否交互式的,允许其内容响应鼠标和触摸输入。这可以通过 Set layer interactive 操作更改。
  • Layer is visible
    测试图层当前是否设置为可见。
    此检查包括父图层:如果任何父图层不可见,则其子图层也视为不可见。
  • Layer name exists
    测试当前布局是否包含具有给定名称的图层(不区分大小写)。当使用动态图层时(即 Add layer 和 Remove layer 动作),这可能会有用。

布局

  • On canvas snapshot
    在 Snapshot canvas 系统操作后触发,当快照准备好时。然后可以使用 CanvasSnapshot 系统表达式访问它。

  • 循环
    循环可以用 Stop Loop 系统操作停止。

  • For
    使用索引变量在一系列值上重复事件指定的次数。可以使用 LoopIndex 系统表达式并传递循环的名称来检索索引。

  • For Each (ordered)
    对每个选定的实例重复一次事件。这只对之前的条件选择的实例重复。有关如何工作的更多信息,请参阅挑选。For Each 通常被误用或冗余使用 – 动作已经适用于条件选择的每个实例,因此通常根本不需要。然而,如果你完全理解事件系统的工作方式,它可以用于强制事件应用于正常情况下不会这样做的每个实例。’ordered’ 变体允许定义迭代实例的顺序由表达式定义。例如,按 Sprite.Y 升序排序将从屏幕上方的实例开始迭代,向下移动。

  • Repeat
    简单地重复指定次数的事件。这将在任何后续条件的每次重复上测试,并且如果满足这些条件,还将在每次重复上运行动作和任何子事件。

  • While
    重复事件,直到事件中的其他条件之一变为 false 或使用 Stop loop 动作。小心不要创建无限循环,这会导致项目挂起。

内存管理

  • Is loading images
    当任何内存管理 ’Load’ 操作正在加载图像时为 True。
  • On image loading complete
    当所有启动的内存管理 ’Load’ 操作完成加载其图像时触发。

    选择实例

  • 重置已选择的对象回到所有对象。后续条件将从所有实例中选择,而不是仅从满足到目前为止的所有条件的实例中筛选。有关实例如何在事件中被选择的更多信息,请参阅“事件如何工作”。在子事件中很有用,以开始再次影响不同的实例。
  • 按比较选择
    选择满足比较的单个对象类型的实例。例如,可以选择所有实例,其中 Object.X * 2 小于 Object.Y + 100,这既不可能使用 Compare X 或 Compare Y 条件。
  • 按评估选择
    选择表达式求值为非零值的对象类型的单个实例。换句话说,对于每个实例,如果表达式为 0,则不选择它,否则选择它。这与比较和逻辑运算符(见表达式)一起使用最有用。例如,可以使用以下表达式选择实例(其中 & 表示“和”,“|”表示“或”):(Object.X > 100 & Object.Y > 100) | (Object.X < -100 & Object.Y < -100)
  • 按最高 / 最低选择
    为给定对象类型选择一个实例,该实例使给定表达式求值为最高或最低数字。这将为对象类型的每个单独实例反复计算提供的表达式,并使用结果值确定哪个实例具有最高或最低结果,然后选择该实例。例如,选择表达式 Object.X 最高的实例将选择最右侧的单个实例。在平局的情况下,将随机选择单个实例 – 它永远不会选择超过一次实例。
  • 选择最后创建的
    选择对象类型或系列中最近创建的实例。这对于 Create object(by name)系统操作很有用。例如,如果你知道创建的对象必须属于一个系列,那么你可以使用方法 Pick last created 从系列中选择创建的实例。
  • 选择第 N 个实例
    在内部选择的对象列表中选择给定位置的实例。这在子事件中最有用,用于分别处理实例。例如,在“Sprite 与 Sprite 碰撞”事件中,Pick 0th instance 和 Pick 1st instance 可用于分别处理碰撞中的每个实例。
    如果所有对象当前都被选中,此条件也可以用于通过其索引 ID(IID)选择对象。
  • 选择重叠点
    选择给定对象类型中与布局中的点重叠的所有实例。布局中的给定 X 和 Y 位置将与其实例的碰撞多边形进行测试。
  • 随机选择实例
    从当前选中的对象中随机选择一个实例。换句话说,如果 Pick random instance 跟随另一个条件,它将从满足先前条件的实例中随机选择一个实例。否则,它从所有实例中随机选择一个实例。

    保存 & 加载

  • 加载完成时
    在 Load 系统操作成功完成后触发。有关更多信息,请参阅如何制作保存游戏。
  • 加载失败时
    在 Load 系统操作未能完成时触发,通常是因为尚未保存到插槽。有关更多信息,请参阅如何制作保存游戏。
  • 保存完成时
    在 Save 系统操作成功完成后触发。有关更多信息,请参阅如何制作保存游戏。
  • 保存失败时
    如果 Save 系统操作未能完成,则触发。如果浏览器已达到其存储配额的限制,或者用户已撤回页面或应用程序写入存储的权限,可能会发生这种情况。

    特殊条件

  • 否则
    如果前一个事件没有运行,则运行。请注意,此条件不会选择任何对象:如果它跟随一个选择对象的事件,则在所有其他事件中,所有实例都会重新选择。Else 只能跟在普通(非触发)事件之后。它还可以跟随另一个 Else 事件与其他条件,以制作“if – else if – else”链。
  • 处于预览状态
    当从 Construct 中的预览运行项目时为真,导出后运行时为假。对于仅在预览时添加调试或诊断功能很有用。
  • 触发一次当为真时
    将普通事件(每 tick 测试一次)转变为触发器。例如,如果一个事件在生命值为 0 时播放声音,通常这个事件每 tick 运行一次。这将播放大约 60 个声音每秒,听起来相当糟糕。在其他条件之后添加 Trigger once while true 会使事件在首次变为真时只运行一次。这使得之前的例子只在你的生命值第一次达到 0 时播放一次声音。它必须是事件中的最后一个条件。

    开始 & 结束

  • 处于暂停状态
    当运行时当前处于暂停状态时为真,即在 On suspended 和 On resumed 之间。这通常意味着浏览器 / 应用程序在后台,并且当前未运行。
  • On suspended
  • On resumed
    当浏览器 / 应用程序暂停和恢复执行时触发。通常,当应用程序进入后台(例如最小化或切换回主屏幕)时,为了保存系统资源和节省电池电量,应用程序的执行被暂停,触发 On suspended。当应用程序重新打开时,触发 On resumed 并恢复执行。
  • On end of layout
    当布局结束时触发。当项目转到不同的布局或项目关闭时,可能会发生这种情况。
  • On loader layout complete
    在进度达到 100%时的加载程序布局上触发。有关如何使用加载程序布局制作自定义加载屏幕的更多信息,请参阅如何制作保存游戏。
  • On start of layout
    当布局开始时触发。使用此事件运行需要在启动时完成的任何操作。

    时间

  • 比较时间
    比较自项目开始以来的时间,以秒为单位。例如,可以设置事件在时间达到(等于)10 秒时运行。
    每 X 秒
    每隔一定时间间隔(以秒为单位)定期运行事件。这也可以在下面的其他条件下使用,仅在满足其他条件时以给定的时间间隔运行事件,例如,“玩家正在按住空格键 AND 每 0.5 秒:发射激光”。
    每 X 秒不会在一个 tick 内运行多次。这意味着非常短的时间周期可能不会产生您期望的结果。例如,许多显示器使用 60 Hz 的刷新率,在这种情况下,Every 0.01 seconds 将在一秒钟内运行 60 次,而不是 100 次。为了避免这种意外的结果,不要使用此条件进行短时间周期 – 最好只是使用 Every tick,如果需要检查 delta-time(dt)以查看上一个 tick 中经过了多少时间。
  • On signal
  • 当使用匹配的标签(不区分大小写)运行 Signal 系统操作时触发。

    模板

  • 模板存在
    检查对象类型是否具有提供的模板名称。
正文完
 0
评论(没有评论)