第一个也是最容易区分的一点就是声明变量和方法。
JavaScript的脚本:
1. private var cubeTransform;
在C#中,同样的代码则会是:
1. private Transform cubeTransform;
这对方法同样适用,在C#中,一个方法什么值也没有返回,那么他的返回值为 void 类型,但是在JavaScript中则可以省略。
类的继承也是不同的。在JavaScript和C#中,方法是隐型并且不可重载,除非方法声明中添加虚拟关键字。不同的是C#只重载那些包含重载关键字的方法。而JavaScript不需要关键词,只要重载类方法就可继承他们。我们来看一个JavaScript类继承的例子:
1. class Weapon extends Item
2. {
3. //Class members and declarations
4. }
在C#中,同样的代码则会是:
1. public class Weapon : Item
2. {
3. //Class members and declarations
4. }
这就是这两种代码的主要区别,实际上他需要定义全部的东西,像执行产出代码,访问GameObject和组件,激光投射等等。还有一些其他的不同点,比如导入函数库的关键字(在JavaScript中用“Import”,在C#中使用“using”),但是这些声明和关键字的不同就比较容易明白了。
1. //do this:
2. private var score:int;
3. //instead of this:
4. private var score;
======================================================
使用JavaScript来获取GameObject很简单,你只需要调用Find()静态方法,并把想要的GameObject的名称作为参数:
1. private var pawnGO:GameObject;
2. function Awake()
3. {
4. pawnGO = GameObject.Find("Pawn");
5. }
用C#也很相似:
1. using UnityEngine;
2. using System.Collections;
3.
4. public class PawnGetter : MonoBehaviour
5. {
6. private GameObject pawnGO;
7.
8. void Awake ()
9. {
10. pawnGO = GameObject.Find("Pawn");
11. }
12. }
在不考虑两种语言的关键字和格式不同的情况下,代码是完全一样的(第一个代码的第四行和第二个代码的第八行是相同的)。不管代码是强类型还是弱类型,GameObject.Find()方法总是会返回一个GameObject值。
现在,让我们看看如何获得一个GameObject上的组件。假设“PawnMover”组件赋给“Pawn”GameObject,让我们来看看如何使用JavaScript获得“PawnMover”组件:
1. private var pawnGO:GameObject;
2. private var pmSC:PawnMover;
3. function Awake()
4. {
5. pawnGO = GameObject.Find("Pawn");
6. pmSC = pawnGO.GetComponen