zan*_*ona 5 c# compiler-construction boo unity-game-engine unityscript
我从使用Unity3d的游戏开发开始,我可以看到有3种支持的语言用于创建脚本:C#,unityscript和Boo ......
虽然,从网页设计过去我显然使用javascript,但经过几次尝试后,我注意到Unity3d并没有完全支持脚本语言和一些元素new Date().valueOf(),如属性arguments和方法中的一些其他语句,如属性和许多其他人将无法正常工作,似乎我的文件不能有一个包装方法,包含所有其他方法,如:
(function (scope) {
function Start() {
...
}
...
}(this));
Run Code Online (Sandbox Code Playgroud)
当使用new Date().valueOf()JS中有效的东西时,我得到:
MissingMethodException:找不到方法:'System.DateTime.valueOf'.Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher()
那么编译器可能会将最初的"unityscript"代码转换为Boo语言?所以也许Boo是正确的"原生"选择,也许unityscript本身不是开发unity3d应用程序时的最佳方式?
我正在考虑一种语言,它完全支持所有已知的本机类和方法,它们可以正常工作吗?
很抱歉上面提到的任何错误,请告诉我您的想法.
Unity本身并不使用"真正的"Javascript.看到:
http://forum.unity3d.com/threads/1117-Javascript-Version
UnityScript基于javascript 2.0.缺少一些东西(switch语句等),但它们的速度只有C++的一半,这比Mozilla快.
一旦你习惯了它,用'JS'进行统一开发是非常非常快速和灵活的......但是当然,如果你要开发本机组件,或者用C接口,你需要使用C#(最后,C#并不难学).
如果您想成为Unity的开发人员并在其上建立职业生涯,请学习C#并使用它 - 不要在UnityScript上浪费您的时间.您可以在Unity之外使用C#进行编程.如果您的主要职业已经是Web开发(或将是),那么继续使用javascript,因为最终C#和UnityScript具有相同的功能,但C#更广泛地用于编程游戏和应用程序.
我使用的商店中的大多数资产是C#或提供JS和C#.语言之间的混合会产生严重的依赖性问题,因为为了在任一语言中使用类,它必须已经由Unity脚本加载顺序处理.要在C#中使用Javascript定义的类,必须在C#脚本文件之前处理该脚本文件.如果javscript类后来需要来自C#类的东西,你必须找到解决方法,因为它不再可能来自javascript文件.Unity有定义脚本顺序的方法.
我以为我会警告你将C#与UnityScript混合,因为如果你不专注于其中一个,你就会遇到这个问题.最终,C#是像VB和JavaScript这样含糊不清的语言和像C++这样的迂腐语言(我有大约10年的C/C++背景)之间的中间地带.
你的标题"什么是最好的xxx"导致了自以为是的答案,但我试图尽可能提供最好的建议,而不是主观的.C#将允许你继续,即使Unity从现在起一年后就会消失.UnityScript/JavaScript只允许您成为Web开发人员.AC#开发人员可以很容易地进入UnityScript/JavaScript,但反过来要困难得多(不是不可能,只是更难).