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 }

更多示例请下载源码查看

语法基本介绍: 

image

posted @ 2015-02-13 15:22  枫月竹  阅读(1676)  评论(0编辑  收藏  举报