-
ET Package是标准的Unity Package
-
ET Package包目录的格式是cn.etetet.+包名,例如cn.etetet.core
-
ET Package 本质上是npm包,ET使用github package功能来实现托管ET Packages,注意在package.json中添加
"publishConfig": { "registry": "https://npm.pkg.github.com/@ET-Packages" }
-
在你们包的根目录加上.github/workflows/release-package.yml 这个文件可以从 https://github.com/ET-Packages/cn.etetet.yiui/tree/master/.github/workflows 复制过去,这是一个github action文件
-
包的制作者在你们github仓库中,点开Actions,点击ET Package这个Action,然后点击右侧的Run workflow即可制作成package
-
注意ET包的目录永远在Packages目录下,包安装完成后cn.etetet开头的包会自动移动到Packages目录
-
包中特殊目录跟文件 a. Scripts 该目录放置Model Hotfix ModelView HotfixView代码,这些代码unity中可热更,这几个子目录下面的结构跟ET8.1完全一样,包含Server Client Share 分别表示在服务端 客户端 双端生效的代码
b. Runtime 该目录放置aot代码,里面都要定义asmdef,作为一个程序集使用,一般以ET.Core这种格式命名
c. Excel,该目录用来放置Excel表格,ExcelExporter工具会扫描这个目录,导出代码到cn.etetet.excel中去,导出配置放在ET/Config/Excel中,其中json格式放在ET/Config/Json中
d. Proto, 该目录放置消息定义,Proto2CS工具会扫描这个目录,生成代码在cn.etetet.proto包中
e. DotNet~ 该目录放置DotNet专用的工程跟代码,因为不能被Unity编辑器识别,所以用了~号
f. CodeMode 该目录类似Scripts目录,区别是Model Hotfix ModelView HotfixView目录下面是Server Client ClientServer,分别是不同CodeMode下使用的代码
Scripts中的Share代表双端都会使用的代码,而CodeMode目录下的ClientServer表示只有Unity编辑器使用ClientServer模式才会使用
g. Editor目录,表示这个包的Editor代码,一般命名是ET.Core.Editor这样命名
h. 其它目录例如Plugins Scenes等等并没有严格限制
i. 注意,每个Package在顶层放一个Ignore的asmdef,这样的好处是这个包的代码默认是不生效的,只有放了asmdef才生效
j. 每个包都放一个packagegit.json文件,里面定义了包的Id跟包名以及git依赖,包的id是统一由熊猫分配 -
注意,假如package是一个完整的可运行的demo,需要包含DotNet~目录,里面放好Model跟Hotfix工程,需要将ET.sln工程复制到包中,这样方便使用者可以复制这个sln到根目录,双击使用
-
DotNet~目录中的csproj工程可以引用其它包的csproj,也可以引用nuget等,都没有限制
-
Model ModelView Hotfix HotfixView中的引用怎么配置?因为每个包都可能有这四个目录,每个包的4个目录引用的程序集都可能不一样,ET提供了一种方法,在packagegit.json中写好依赖,具体可以参考cn.etetet.core中的packagegit.json文件 因为最终这些目录会合并到demo的4个程序集中去,我们可以运行ET->Refresh来将所有的引用最终设置到demo的Model ModelView Hotfix HotfixView四个程序集的引用中去
-
如果自己制作的包需要依赖其它git包,例如memorypack,那么可以在自己项目中的packagegit.json文件添加GitDependencies项,具体可以参考cn.etetet.core包
-
demo包制作需要给Model ModelView Hotfix HotfixView4个asmdef加上INITED宏,防止包一下载下来就生效,导致错误。只有在运行ET->Init后才会加上INITED宏,这样4个程序集才会生效
-
注意为了让自定义菜单简洁统一,Package自定义的菜单使用"ET->Package名->具体功能" 这种风格,例如ET->Loader->Init
-
为了控制打包裁剪问题,demo可以在自己包目录放置一个link.xml控制裁剪,init的时候会把link.xml链接到Assets目录,因为Unity只扫描Assets中的link.xml
- 付费包的制作过程跟上面是一样的,区别是一踢公司(熊猫)会开通一个私有仓库给开发者,开发者制作出来的包也是私有的
- 用户要安装包需要开通权限,用户需要找一踢公司(熊猫)付费开通,开通之后就能正常访问包跟仓库
- 假如开发者的仓库不提供源码给用户,只提供包,这也是可行的,具体找一踢公司(熊猫)聊
- 付费包双方职责:开发者制作包,维护包,确保包正常使用,一踢公司(熊猫)负责收费开通权限,维护包下载安装稳定,以及github packages的相关费用支出。包的定价由开发者跟一踢公司(熊猫)双方商量决定
- 收入分成,开发者跟一踢公司(熊猫)分成比例是7:3,注意分成都是税前,如果开发者是公司,则7成扣除税后(假如有的话)直接转入开发者的公司账户,如果开发者是个人,一踢公司(熊猫)需要扣除税再支付给个人开发者
- 结账周期是3个月结账一次