unityscript中的基本功能

时间:2013-02-28 04:56:22

标签: function syntax unity3d unityscript

我只是有一个基本问题。我正在尝试学习如何使用unityscript的函数,并且当我使用类似

之类的东西创建函数时我学会了
function Example(text)
{
    print(text);
}

然后使用

调用它
Example();

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

现在,我的问题是,如果有效,那么为什么我不通过两个数字并要求让它们添加工作?我试图使用的代码如下:

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

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

  

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

我在Javascript函数上观看了this video,在9分钟左右的视频中,这个人正好键入了这个,然后获取脚本为他添加。我对脚本编程比较陌生,而且我对我可能做错了什么并不太了解。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

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

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

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

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

我在UnityScriptJavascript here之间找到了一个很好的差异列表。当我从该网页创建快速清单时,我可以告诉您差异(可能不是全部):

  • JavaScript是无类
  • JavaScript在一个var语句中支持多个变量声明。
  • 在JavaScript中,赋值被视为表达式。
  • JavaScript中的每个顶级变量都是全局变量。此外,任何不在var语句之后的变量声明都是全局的。
  • 在Javascript中,动态输入效率很高。
  • 在JavaScript中,隐私是非常规的。
  • UnityScript标识符中不允许使用美元符号($),因为它们位于JS标识符中。
  • UnityScript中没有with语句。
  • Javascript支持Regular Expression LiteralsRegExpregex)。
  • 在JavaScript中,this可以引用两种内容之一,具体取决于上下文:
    • 全局对象(最好不在此解释)
    • 当前方法或构造函数所属的对象

我已重新提出您的问题,以便在UnityScript中对其进行分类。 StackOverflow对此有所说明:

  

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

我也必须找到困难的方法。我搞砸了两种语言got to this problem

答案 1 :(得分:0)

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

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