If/Else 条件正在改变变量的值 (SparkAR)

If/Else condition is changing the value of variable (SparkAR)

我在 SparkAR 中遇到了这个奇怪的问题。

我试图从补丁编辑器中提取数据并将其传递给 if/else,但没有成功。我删除了所有内容以查看问题出在哪里,看起来像这样的代码:

function compareAlpha(){
    var alpha = 0;
    if (alpha = 1){
      Diagnostics.log('alpha is 1')
    } else {
      Diagnostics.log('alpha is not 1')
    }
  };
  compareAlpha();

显示为 "alpha is 1",这对我来说听起来很疯狂。我将 alpha 声明为 0 然后 if 条件将其更改为 1??

抱歉,如果这是一个非常愚蠢的问题,我才刚刚开始编码,而且 spark 网站上的文档并不那么容易理解。

function compareAlpha(){
    var alpha = 0;
    if (alpha === 1){
      Diagnostics.log('alpha is 1')
    } else {
      Diagnostics.log('alpha is not 1')
    }
  };
  compareAlpha();

请使用 == 或 === 来检查条件,否则将无法正常工作。如果您使用 1 次=,则多次使用 = 符号,这意味着您在 variale 中使用一个值,如果您使用 2 o 3 =,则意味着您正在比较右侧和左侧

您不能"pull"补丁编辑器中的任何数据。

您需要明确地将补丁编辑器中的数据传递给脚本。

最简单的例子:

  1. 创建新的空白项目
  2. 添加脚本并在其设置中创建 "To script" 数字变量 See Pic 1

现在您可以在脚本中通过模块 "Patches"

访问变量 "alpha"
  1. 将此代码添加到脚本中
const Patches = require('Patches');
const Diagnostics = require('Diagnostics');

// monitor() and subscribe() methods allows you yo "listen" variable changes in patch editor
Patches.outputs.getScalar('alpha').then(function(alphaSignal){
    alphaSignal.monitor().subscribe(function(alphaVal){
        if(alphaVal.newValue == 1)
        {
            Diagnostics.log('alpha is 1');
        }
        else
        {
            Diagnostics.log('alpha is not 1');
        }
    });
});
  1. 一切正常,让我们做一些简单的检查并确保必要的消息显示在控制台中。例如,一组来回更改 alpha 值的补丁。 See Pic 2