• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Scorpio-CSharp: Unity游戏热更新脚本

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Scorpio-CSharp

开源软件地址:

https://gitee.com/qingfeng346/Scorpio-CSharp

开源软件介绍:

基础介绍


sco是c#实现的解释型脚本,是一种高效,轻量,可嵌入的脚本语言,语法类似javascript,类型为弱类型,通过使用基于栈的虚拟机解释字节码来运行.

安装 sco 命令


Windows

  • 方式1(推荐)
  • 方式2,winget(Windows 10 1709以上版本系统自带)安装,运行命令(推荐)
winget install Scorpio.sco
  • 方式2
    • 下载Release压缩包并添加环境变量

Mac

  • 方式1 - brew安装,运行命令(推荐)
brew tap qingfeng346/brewbrew install sco
  • 方式2
    • 下载Release压缩包并添加环境变量

Linux

  • 方式1
    • 下载Release压缩包并添加环境变量
  • 方式2,运行命令(已安装PowerShell Core的机器)
pwsh -Command "Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://qingfeng346.gitee.io/installsco.ps1'))"

Unity导入

upm导入(推荐)

// 添加地址 https://github.com/qingfeng346/upm.git?path=/Packages/com.scorpio.sco#sco/[version]// 示例:"dependencies": {    "com.scorpio.sco": "https://github.com/qingfeng346/upm.git?path=/Packages/com.scorpio.sco#sco/2.3.5",}

openupm导入(推荐)

openupm install com.scorpio.sco

源码导入

  • 导入源码目录 Scorpio/src 即可,不用版本可以下载Release的Source Code

兼容的 .net 平台


  • unity2018及以上
  • .net framework 4.0 及以上
  • .net standard 2.0 及以上
  • .net core 2.0 及以上
  • asp.net
  • asp.net core
  • mono
  • xamarin

Unity相关


  • 支持的Unity版本

    • Unity2018及以上
    • 请设置 PlayerSettingApi Compatibility Level.NET Standard 2.0
  • 支持的Unity平台:

    • PC, Mac & Linux Standalone(包括IL2CPP)
    • iOS(包括IL2CPP)
    • Android(包括IL2CPP)
    • UWP(仅支持IL2CPP)
    • WebGL

注意事项


  • 脚本文本文件编码要改成 utf8 without bom (无签名的utf8格式)
  • 使用 importType 函数引入一个c#类, 参数字符串请参考 Type.GetType, 类似
    • TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly
    • TopNamespace.Sub+Namespace.ContainingClass+NestedClass,MyAssembly
  • 脚本内所有c#实例(除了bool,number,string,enum等基础类型) 均为引用, struct 变量也一样
  • event 对象 += -= 操作可以使用函数 add_[event变量名] remove_[event变量名] 代替
  • c# 扩展函数, 请先调用 importExtension("类型") 引用
  • Unity3d 使用 IL2CPP 后, 部分Unity3D的类或函数不能反射获取,请配置link.xml或者使用快速反射功能
  • genericMethod, genericType 函数在IL2CPP下生成未声明过的类型会报错

脚本调用c#运算符重载


运算符号反射名称脚本是否支持直接调用
+op_Addition支持
-op_Subtraction支持
*op_Multiply支持
/op_Division支持
%op_Modulus支持
|op_BitwiseOr支持
&op_BitwiseAnd支持
^op_ExclusiveOr支持
>op_GreaterThan支持
>=op_GreaterThanOrEqual支持
<op_LessThan支持
<=op_LessThanOrEqual支持
==op_Equality支持
!=op_Inequality不支持, 脚本 != 会直接取反 ==
[]get_Item(获取变量)支持 key 不为string的情况
[]set_Item(设置变量)支持 key 不为string的情况

快速反射


  • 快速反射类生成
    • 使用命令行可以生成快速反射类文件,示例
    sco fast -dll [dll文件路径] -class [class完整名] -output [输出目录]
  • 快速反射类使用
    • 例如使用快速反射的类为 UnityEngine.GameObject , 生成的快速反射类则为ScorpioClass_UnityEngine_GameObject, 然后 c# 调用
    Scorpio.Userdata.TypeManager.SetFastReflectClass(typeof(UnityEngine.GameObject), new ScorpioClass_UnityEngine_GameObject(script))

源码目录说明


  • Scorpio 脚本引擎源码
  • ScorpioExec 命令行 sco
  • ScorpioReflect 快速反射机制的实现
  • ScorpioTest Unity3D内使用sco脚本示例

捐助作者



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap