5

我只有一个基本问题。我正在尝试学习如何将函数与 unityscript 一起使用,并且我了解到,当您使用类似的东西创建函数时

function Example(text)
{
    print(text);
}

然后使用

Example();

您实际上可以在括号中的后一段代码的括号中插入一个字符串或一个数字,它将通过并将自己插入到您之前创建的函数中。在这种情况下,它最终会打印我在括号中输入的任何内容。

现在,我的问题是,如果这行得通,那么为什么我不传递两个数字并要求让它们添加工作的函数呢?我尝试使用的代码如下所示:

Addition(4, 4);
function Addition(a, b)
{
    print(a+b);
}

当我尝试执行此操作时,Unity 告诉我

运算符“+”不能与“Object”类型的左侧和“Object”类型的右侧一起使用。

我正在观看这个关于 Javascript 函数的视频,在大约 9 分钟的视频中,那个人输入了确切的内容,然后获取脚本为他添加它。我对脚本编写相当陌生,而且我对自己可能做错了什么没有太多了解。在此先感谢您的帮助。

4

2 回答 2

5

实际上,在 Unity 中,您的代码必须如下所示:

Addition(4, 4);
function Addition(a:int, b:int)
{
    print(a+b);
}

您必须在函数的参数中调用您期望的参数类型。您完全正确地说在 JavaScript 中通常不需要这样做。在 Unity 中,它是。

这是因为它实际上被称为UnityScript. UnityScript 是那些想要指出 Unity 的 Javascript 与浏览器中使用的传统版本的 Javascript 非常不同的人使用的名称。

我为您找到了一个很好的列表,其中列出了UnityScript和之间Javascript 差异。当我从该网页创建一个快速的项目符号列表时,我可以告诉你不同之处(可能甚至不是全部):

  • JavaScript 是无类的
  • JavaScript 支持在一个 var 语句中声明多个变量。
  • 在 JavaScript 中,赋值被视为表达式。
  • JavaScript 中的每个顶级变量都是全局变量。此外,该语句之前没有的任何变量声明var都是全局的。
  • 在 Javascript 中,动态类型是有效的。
  • 在 JavaScript 中,隐私是非常规的。
  • UnityScript 标识符中不允许使用美元符号 ($),因为它们在 JS 标识符中。
  • UnityScript中没有with声明。
  • Javascript 支持Regular Expression Literals(RegExpregex)。
  • 在 JavaScript 中,this可以根据上下文引用以下两种事物之一:
    • 全局对象(最好不要在这里解释)
    • 当前方法或构造函数所属的对象

我已经重新标记了您的问题,以便在 UnityScript 中对其进行分类。StackOverflow 对此有这样的说法:

Unity 的 JavaScript 试图密切遵循 ECMAScript 标准,它在许多方面与基于相同标准的其他 JavaScript 实现不同。它可能与 Microsoft 的 JScript 最为相似,尤其是两者都是 .NET 语言。但是,Unity 的版本是独立开发的,两者之间存在许多差异。

我也不得不找出困难的方法。我弄乱了两种语言并解决了这个问题

于 2013-02-28T08:05:19.843 回答
0

Unity JavaScript 出于某种原因没有将它们4作为原始Number类型,因此它无法执行加法。

您可以尝试通过调用它们的valueOf()方法将它们转换为原始类型。

于 2013-02-28T04:58:51.480 回答