星期二, 二月 18, 2014

命令行如何手工编译UnityScript(javascript)?


首先需要运行安装好的unity mono的cli.bat,预设一些环境变量。

cli.bat在 {unity3d安装目录}\\Unity\Editor\Data\Mono\bin\cli.bat
Linux下就为cli了。
然后在一个目录下建立自己的Javascript程序比如Main.js
test4\Main.js

#pragma strict

import System;
//import UnityEngine;

public static function Main(args: String[]): void {
    print("Hello World!");
    print("WTF,终于工作了");
var printText:String = "Hello Console!";
   print(printText);   
}


set UNITY_DLL_DIR=%UNITY_INSTALL_DIR%\Editor\Data\Managed
set ADDITIONAL_DDL_REFS=
set SOURCE_DIR=d:\temp\test4\  //这里保存着Main.js文件
set PATH={INSTALL_DIR}\Unity\Editor\Data\Mono\bin;{INSTALL_DIR}\Unity\MonoDevelop\bin;%PATH%

{INSTALL_DIR}是安装unity3d的目录。

然后调用:
mono    "%MONO_PATH%\us.exe" -debug -target:exe -base:System.Object  --method:Awake  -out:"test4.exe"    -reference:'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll' -srcdir:%SOURCE_DIR%


星期一, 二月 17, 2014

如何在命令行运行mono 的.net执行程序

如果使用mdtool build 生成的可执行文件使用
mono.exe  file.exe 出现错误:
monodevelop Unhandled Exceptio Could not load file or assembly  Boo.Lang
或者
The assembly mscorlib.dll was not found or could not be loaded
这是环境变量 MONO_PATH设置不正确,最简单方法是调用:
Unity\Editor\Data\Mono\bin\cli.bat 或者cli(linux) 后面跟着需要运行的.net程序
查看cli.bat或者cli,可以看到:

@echo off
set MONO_PREFIX=%~dp0/..
set MONO=%MONO_PREFIX%/bin/mono
set MONO_PATH=%MONO_PREFIX%/lib/mono/2.0
set MONO_CFG_DIR=%MONO_PREFIX%/etc

"%MONO%" %*