Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

code10088/HelloWorld

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

810 Commits

Repository files navigation

快速开始

  1. 切换到对应平台
    小游戏建议使用:unity2022工程地址
    微信小游戏需要在Player中添加宏:WEIXINMINIGAME
    抖音小游戏需要在Player中添加宏:DOUYINMINIGAME
    注意:抖音小游戏需要移除微信导出插件,否则运行报错卡死;微信小游戏不要移除抖音导出插件,运行有报错但不影响;
  2. 安装HybridCLR
  3. 执行Tools/BuildBundles
  4. 导出工程:
    修改Assets/Scripts/MainScripts/GameSetting.cs中的CDN
    配置Preferences/Customer BuildPlayer路径
    执行Tools/BuildProject

后续开发内容

背包
聊天
好友
商城
选择服务器
英雄展示
战队
任务
天赋
活动:首充、七天签到
恭喜获得奖励展示

最终目标:周边功都有一个能用的基础版本,给游戏前端一个参考,让项目从0.5开始
有问题可联系QQ:1396916098

使用文档

工程目录结构

image
Build:打包导出目录、Jenkins打包脚本、版本控制文件
HelloWorld:工程
Luban:配置
NetMsg:protocolbuffer消息
SDK:Android sdk工程(暂时没有ios)

image
Editor:编辑器工具
HybridCLRData:Hybrid link
Obfuz:加密相关配置
Plugins:sdk、插件
Scripts:MainScripts:Aot代码 SubScripts:热更代码
StreamingAssets:首包资源
TextMesh Pro
WebGLTemplates:微信导出工具
WX-WASM-SDK-V2:微信导出工具
YooAsset
ZRes:所有资源(Z没有意义,为了使文件夹在最后,便于查找)

image
Assembly:热更程序集
Audio:音效
DataConfig:Luban配置数据
Font:字体
GameConfig:配置数据
Model:模型
Quality:高低端机配置
Scene:场景相关资源
Shader
UI:UI相关资源

Luban配置

image
Client:客户端代码和数据,数据使用c#_unity_bin
Datas:配置表,其中ConstConfig.json是常量配置表
Defines:主要是枚举配置
gen.bat/gen.sh导出脚本
其他可参考luban文档

image
Unity工具中执行Tools/CopyConfig会自动执行导出脚本并复制代码和数据到工程中,需要配置Preferences/Customer Luban路径

资源

导入:
根据路径匹配,自动设置格式
音效参考Assets/ZRes/Audio/Sound/Frequence/AudioSetting
模型参考Assets/ZRes/Model/AModelSetting
贴图参考Assets/ZRes/Scene/AImportSetting
Sprite参考Assets/ZRes/UI/Atlas/AImportSetting

管理:
AssetManager包含Yooasset初始化、统一加载卸载接口(不提供同步接口)、获取加载进度
Load:加载一个或一组资源,返回唯一id
Unload:根据唯一id卸载资源或资源组,资源会在内存中缓存,根据CacheTime类型设置立即卸载或缓存一段时间
强烈建议所有资源的加载都使用AssetManager处理,便于切换Addressable/Xasset等其他打包方案
资源配置文件Assets/YooAsset/Config/AssetBundleCollectorSetting.asset
其他可参考Yooasset文档

热更:
资源版本配置:Build/VersionConfig.txt
一个AppVersion对应一个ResVersion
对某个AppVersion热更只需要修改其对应ResVersion值即可
如果版本文件中没有配置,说明该AppVersion需要强制更新
代码热更HotUpdateCode
1、检查资源版本
2、Yooasset更新Manifest
3、更新HotUpdateConfig.txt
4、根据HotUpdateConfig.txt进行更新,包含热更代码、补充元数据、资源热更用到的界面和提示弹窗(可以更新资源更新界面)
资源热更HotUpdateResData
下载所有本地不存在或需要更新的资源
WebGl下默认不更新,边玩边下载模式
如果需要静默下载模式,只需要进入游戏后开始资源热更即可
热更界面在Start场景中,出包后无法修改;资源热更界面可以在代码热更过程中更新
编辑器下热更测试:在ProjectSetting/Player中加入宏HotUpdateDebug、打包不使用obfuz混淆

加密:
代码加密启用了Obfuz所有功能
资源加密EncryptionServices.cs DecryptionServices.cs
其他可参考Obfuz加密文档
其他可参考Yooasset加密文档

打包

image
HybridCLRGenerate:执行Hybrid GenerateAll并copy热更代码
YooAssetBuild:bundle打包
UnloadBundles2CDN:上传bundle到cdn(当前使用腾讯储存桶,需要配置Preferences/Customer腾讯储存桶)
cdn目录结构
WebGL
VersionConfig.txt(Build目录中)
1.2.0
xxx.bundle
Android
VersionConfig.txt(Build目录中)
1.2.0
xxx.bundle
BuildBundles = HybridCLRGenerate + YooAssetBuild + UnloadBundles2CDN
BuildProject:导出apk、ipa、微信小游戏工程、抖音小游戏工程

Jenkins配置:
使用Build/JenkinsConfig/jenkins-cli.jar工具创建项目

 java -jar jenkins-cli.jar -s http://localhost:8888 -auth qinshuai:123456 create-job HelloWorld HelloWorld.xml<br>

修改Build/UnityBuild.bat中的路径
修改Jenkins配置中的路径

组件导出工具

以UI为例
image
ExportClass:收集当前节点下(包括当前节点)所有挂载ExportComponent的节点
Path:代码导出路径
ClassName:代码类名,如果需要继承可以这样写UITestComponent:UIComponent
ExportComponent:需要导出的Component,Element为空时导出GameObject
导出属性命名规则:当前节点名+Component名(比如bgImage),所以要求需要导出的节点名不能重复
不仅仅用于UI、Scene,所有需要Find/GetComponent的地方都可以使用

UI

1、在Luban/Defindes/enum.xml中加入UIType枚举配置
2、在Luban/Datas/UIConfig.xls中加入相关配置,其中Name是当前UI代码的类型名
3、所有UI继承于UIBase,里面包含了常用的动画、设置图片、添加特效、复制Prefab等常用接口
4、UI逻辑参考UITest
5、UIManager:UI控制类,包含打开关闭UI、缓存卸载UI资源、适配、层级控制
6、UIPreview:Inspector中预览UI
特别提醒:
同时打开两个界面,虽然资源加载完成顺序不一定,但UIManager保证UI打开顺序一定会按照代码先后顺序打开

Scene

与UI类似
1、在Luban/Defindes/enum.xml中加入SceneType枚举配置
2、在Luban/Datas/SceneConfig.xls中加入相关配置,其中Name是当前Scene代码的类型名
3、所有Scene继承于SceneBase
4、Scene逻辑参考TestScene
5、SceneManager:Scene控制类,包含打开关闭Scene、缓存卸载Scene资源
特别提醒:
同时打开两个场景,虽然资源加载完成顺序不一定,但SceneManager保证Scene打开顺序一定会按照代码先后顺序打开
Scene使用Prefab方式制作,这样加载卸载使用AssetManager统一接口
每个场景都支持可以打开多个,需要根据id卸载

网络

SocketManager:创建、断开链接
SKCP:udp网络,继承于SBase
STCP:tcp网络,继承于SBase
SWeb:websocket网络,继承于SBase
三种都实现了心跳、断线重连、粘包处理
序列化/反序列化:为了兼容多种语言,使用protocolbuffer处理,如果需要使用Memorypack等其他库可自行更换
NetMsgDispatch:解析后的网络消息加入队列在主线程中分发到各个模块
image
Unity工具中执行Tools/CopyMsg会自动执行导出脚本并复制代码到工程中,需要配置Preferences/Customer Msg路径

多语言

Luban/Datas/Language.xls:多语言配置
使用UIText组件,i18nKey为配置中的Key
Runtime只加载一种语言配置
Editor切换多语言:Tools/Language/CN

高低端机设置

Luban/Datas/DeviceInfo.xls配置指定设备分级,Name是手机型号或gpu处理器型号
没有添加机型或处理器配置的话,根据机器处理器数量和内存自动确定高低档位
根据档位默认设置帧率、画面质量、阴影质量、抗锯齿、后处理等
如果需要修改某一项,参考UISetting
image

核心功能

Driver:
所有每帧刷新逻辑都通过Driver统一管理
其中分为不切片列表和切片列表,不切片列表每帧刷新,切片列表在cpu负载的时候间隔刷新
StartUpdate:每帧刷新
StartTimer:定时器
StartFrame:间隔帧
StartTask:线程池
StartCoroutine:协程
Pool:
GameObjectPool<T>:缓存一个GameObject,使用异步实例化接口
GameObjectPool:缓存多个不需要特殊处理的GameObject
AssetObjectPool<T>:在GameObjectPool<T>基础上增加了资源加载缓存卸载
AssetObjectPool:在GameObjectPool基础上增加了资源加载缓存卸载
基本覆盖所有缓存使用场景,具体可以查看代码实现ObjectPool.cs
Debug:
在ProjectSetting/Player中加入宏Debug开启Debug模式,正式上线时需要关闭
开启Debug后会自动显示Fps和输出窗口
所有打印使用GameDebug接口,便于关闭Debug后关闭所有输出
Fps插件
Debug插件
EventManager:事件
AudioManager:音效、背景音乐
EffectManager:场景特效
ConfigManager:所有配置数据读取接口
DataManager:所有网络数据读取接口
GamePlayerPrefs:兼容微信和抖音的PlayerPrefs统一接口
ProcessControl:
执行队列,用于流程控制,使逻辑更清晰,参考GameStart
也可以用于进游戏的各种弹窗控制,参考UITest中UIProcess

其他

小游戏:
在ProjectSetting/Player中加入宏WEIXINMINIGAME切换到微信小游戏模式
在ProjectSetting/Player中加入宏DOUYINMINIGAME切换到抖音小游戏模式

Sdk:
Android:sdk测试代码
微信:开放域数据、排行榜、各种广告
抖音:TT初始化、登录、跳转导航栏、排行榜、各种广告

编辑器工具:
Alt+D:代替ctrl+d自动按下标命名
选中GameObject右键Tools/CopyPath复制路径到粘贴板
Ctrl×ばつ2
Ctrl+←:游戏速度÷2
Ctrl+↓:游戏速度=1
快进快退快捷键

具体功能模块

通用道具:
Luban/Datas/Items.xls:道具配置
CommonItem:道具GameObject缓存

活动:
ActivityData:所有活动数据管理
ActivityDataBase:活动基类,包含开始、刷新、结束、红点

功能解锁:
Luban/Datas/FunctionUnlockConfig.xls:支持条件组合
FunctionUnlock

引导:
Luban/Datas/Guide.xls:引导步骤配置
UIGuideCollect:标记引导步骤中的GameObject
GuideData:引导开启、下一步、跳过、结束接口
具体用法可以参考UITest

画面设置:
UISetting:游戏中常用画面质量设置

通用提示、选择界面:
UICommonTips:通用文字提示
UICommonBox:通用确认取消面板

Buff、触发器:
BuffManager:Buff管理
TriggerManager:触发器管理

镜头控制:
CameraController:上帝视角镜头,基于LeanTouch实现

邮件:
UIMail:一键领取奖励、一键已读、删除已读等功能
MailData:包含测试数据,注意删除测试相关

About

unity框架 集成hybridclr luban yooasset protobuf memorypack kcp websocket等插件

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /