Scorpio-CSharp简介
Scorpio-CSharp是为了解决Unity游戏各个平台热更新的问题,纯c#实现 基于.net2.0 兼容所有c#平台 语法类似 javascript,
设计初衷是为了做一个所有人都能修改的热更新脚本,源码很少,所有路径分的很清楚,代码结构清晰,
对于那些对游戏热更新感兴趣或者对脚本系统,想自己写脚本的人再好不过了,
只要花费一天的时间就能完全读懂并修改源码
如果出了问题用的人自己就能修改,不用各个论坛求助,各种挠头,然后等待作者来解决
(ps:如果发现bug,可以立刻联系作者,作者可以放下手上工作,优先解决脚本BUG,最多一个工作日肯定更新解决,建议不算,如果联系请加QQ群 245199668 )
代码全部使用c#实现,如果出现BUG不会导致程序崩溃,而且可以很方便的对源码进行修改(如果自己改好了记得通知作者啊,本人在此拜谢了!)
Scorpio-CSharp是Unity平台兼容性最好,支持发布平台最多的脚本
目前我自己所在公司正在使用脚本,已经有几款已经上线游戏,具体请前往
https://github.com/qingfeng346/Scorpio-CSharp#showcase
Unity3d发布平台支持 (本人亲测):
Web Player
PC, Mac & Linux Standalone
iOS(包括IL2CPP 32&64)
Android
BlackBerry
Windows Phone 8
Windows 10 (Universal Windows Platform)
WebGL
在Unity中使用Scorpio-CSharp:
* 第一种方法(建议) : 源码导入,把 Scorpio 文件夹复制到项目 然后删除 文件夹下的Properties 文件夹和 Scorpio.csproj 文件即可
* 第二种方法 : 编译后倒入,用VS打开Scorpio.sln编译一下项目 生成Scorpio.dll文件 然后复制到Unity项目Plugins目录下
使用示例:
1 using UnityEngine; 2 using System.Collections; 3 using Scorpio; 4 namespace MySpace { 5 public class Test { 6 private int a = 100; 7 public Test(int a) { 8 this.a = a; 9 } 10 public void Func() { 11 Debug.Log("Func " + a); 12 } 13 public static void StaticFunc() { 14 Debug.Log("StaticFunc"); 15 } 16 } 17 } 18 public class NewBehaviourScript : MonoBehaviour { 19 Script script = new Script(); //new一个Script对象 20 void Awake() { 21 script.LoadLibrary(); //加载所有Scorpio的库,源码在Library目录下 22 script.PushAssembly(GetType().Assembly); //添加当前程序的程序集 23 script.PushAssembly(typeof(GameObject).Assembly); //添加UnityEngine的程序集 (如果不调用此函数, 在调用import_type函数时会找不到 UnityEngine程序集里面的类) 24 script.SetObject("CTest", script.CreateObject(new MySpace.Test(300))); //SetObject可以设置一个c#对象到脚本里 25 //LoadString 解析一段字符串,LoadString传入的参数就是热更新的文本文件内容 26 script.LoadString(@" 27 print(""hello world"") 28 "); 29 //Scorpio脚本调用c#函数 30 script.LoadString(@" 31 MyTest = import_type(""MySpace.Test"") //import_type 要写入类的全路径 要加上命名空间 否则找不到此类,然后赋值给 MyTest 对象 32 MyTest.StaticFunc() //调用c#类的静态函数 33 var t = MyTest(200) //new 一个Test对象, 括号里面是构造函数的参数 34 t.Func() //调用c#的内部函数 35 CTest.Func() //调用c#的内部函数 CTest是通过 script.SetObject 函数设置 36 "); 37 } 38 }
语法基本介绍: