悠游架构
来自悠游课堂
qq_2385708623
不忘初心
展开
-
类对象池设计
从对象池中取出一个对象。原创 2023-06-05 15:03:03 · 100 阅读 · 0 评论 -
部署CSRedis类库进行初始化并测试字符串
关闭redis的自启动打开服务器工程,选中Youyouserver.Model,右击鼠标选中浏览中搜索,下载然后出现原创 2021-06-08 15:57:26 · 150 阅读 · 0 评论 -
预加载流程调整
启动流程,访问账号服务器,获取渠道号,版本号,资源地址然后进入检查更新的流程/// <summary> /// 启动流程 /// </summary> public class ProcedureLaunch : ProcedureBase { public override void OnEnter() { base.OnEnter(); //访问账号服务器原创 2021-03-22 23:46:11 · 193 阅读 · 0 评论 -
服务器08——Redis的安装启动和数据结构
redis是键值数据库配置文件在redis.windows.config中,Redis当成内存数据库原创 2020-08-03 13:15:06 · 138 阅读 · 0 评论 -
服务器07——日志
using MongoDB.Driver;using System;using System.Collections.Generic;using YouYouServer.Core.Utils;namespace YouYouServer.Core.Logger{ /// <summary> /// 日志管理器 /// </summary> public sealed class LoggerMgr { ...原创 2020-07-29 19:56:55 · 177 阅读 · 0 评论 -
服务器06 MongoDB和Redis
MongoDB语法原创 2020-07-11 17:32:26 · 139 阅读 · 0 评论 -
服务器05——搭建项目核心库导入NuGet程序包对MongoDB进行初始化
原创 2020-06-22 02:07:04 · 250 阅读 · 0 评论 -
服务器02创建分布式游戏服务器解决方案
安装VS2019的时候选中ASP.NET和Web开发,.NET桌面开发,通用Windows平台开发三个原创 2020-06-19 13:54:24 · 265 阅读 · 0 评论 -
服务器框架
客户端Client登录连Nginx反向代理,负载均衡web服务器(作用外部负载,比如有100W玩家登录,一个web处理不过来,做Web集群),web集群访问一个共享缓存SHMRedis(ShareMemory),共享缓存使用的是Redis,数据库采用的是MongoDB。 共享缓存设计原理,当我们写数据的时候,先写到redis里面,由程序定时的写入mongoDB中,读数据的时候,先从redis,根据key拿数据,如果没有的话,去mongoDB中查询,查完之后写入redis里面,账号...原创 2020-06-15 01:15:21 · 318 阅读 · 0 评论 -
界面音效以及3D音效通过参数控制声音加载声音资源包
补充博客把音效的课件加进来namespace YouYou{ /// <summary> /// 音频组件 /// </summary> public class AudioComponent : YouYouBaseComponent, IUpdateComponent { private AudioManager m_AudioManager; [Header("释放间隔")] .原创 2020-06-07 22:57:35 · 436 阅读 · 0 评论 -
非资源包模式下表格加载总数计算错误
加载完毕之后分发了消息出去在预加载流程中有监听单个表格加载完毕后对比,总数和加载完的数是否一致,如果一致再分发一个全部加载的消息延迟一帧执行表格全部加载完毕的消息监听...原创 2020-05-12 13:31:02 · 110 阅读 · 0 评论 -
修正定时器暂停延迟问题
定时器周期有延迟阶段和运行阶段,如果延迟阶段暂停,再开启,就直接进入运行阶段了。一开始运行游戏会有延迟,延迟阶段,可以设置延迟时间,过了延迟时间就开始运行。 public class TimeAction { /// <summary> /// 是否正在运行 /// </summary> public bool IsRuning { get; private set; }...原创 2020-05-11 19:41:39 · 352 阅读 · 0 评论 -
优化表格读取解决当单列内容过长被截取的问题
按下window+R, 输入Regedit,原创 2020-05-11 01:43:02 · 209 阅读 · 0 评论 -
优化Xlua框架内存释放Lua调用C#智能提示
凡是使用this.的地方,脚本销毁的时候把this.设置为nil对象池回收之前,执行一下LuaManager.luaEnv.FullGc();,把lua和c#之间的关联打断,回收一下lua中可回收的东西做智能提示需要用到一个解压缩之后把文件放到然后依次点击xlua下的第一个选项,第二个选项在下面的文件夹下有四个压缩包依次解压然后选择目录一直点下一步就可以每次C#代码修改过后,要执行依次...原创 2020-05-11 01:05:05 · 1772 阅读 · 0 评论 -
资源池管理插件PoolManager
SpawnPool,游戏物体对象池总池,总池下面有PrefabPool预设池子池总池有角色总池,特效总池等等每一种独立的预设都是一个子池(一个预设对应一个子池),这些东西最后会放到总池下面List<PrefabPool>,游戏物体对象的总池预设池,子池Spwn对象的时候,从预设列表读取预设数据, 根据数据加载出asset,Sys_Prefab中的预设编号即子池编号,PoolId对应对象池初始化,GameObjectP...原创 2020-05-09 13:55:10 · 1343 阅读 · 0 评论 -
资源加载(9)——对角色的加载卸载内存分析,多角色加载卸载
加载处角色,通过采样方式在界面显示分类资源中的资源分类RolePrefab和RoleSources中也能看到资源,引用基数角色实例出来的时候注册到实例资源池,释放的时候执行释放实例资源...原创 2020-05-03 03:57:15 · 154 阅读 · 0 评论 -
资源加载(8)——场景边玩边下载并检查场景对内存的占用
场景加载器加载场景先加载loadbundle,然后再异步加载场景加载资源包 #region LoadAssetBundle 加载资源包 /// <summary> /// 加载中的Bundle /// </summary> private Dictionary<...原创 2020-05-03 02:46:50 · 216 阅读 · 0 评论 -
资源加载(7)——实现边玩边下载角色
场景中的人物不在预加载中出现,走下面的流程,这部分输入资源加载里的,不属于版本更新加载资源包原创 2020-04-30 02:29:49 · 968 阅读 · 0 评论 -
资源加载(6)——在登录流程中加载登录场景
执行加载场景,先把旧的卸载掉,获取旧的场景明细,循环卸载 /// <summary> /// 执行加载场景 /// </summary> /// <param name="sceneId"></param> private void Do...原创 2020-04-29 01:35:23 · 190 阅读 · 0 评论 -
资源下载(5)——CDN资源版本不一致开始更新
预加载的时候把进度值设置为99更新中更新中的监听监听的地方全部加载完毕之后设置为100派发出去加载完毕的消息,然后进去登录状态...原创 2020-04-29 00:25:30 · 283 阅读 · 0 评论 -
资源下载(4)——CDN资源版本不一致开始更新
调用的地方只有下载完毕之后才保存可写区资源版本号 #region BeginCheckVersionChange 开始检查更新 /// <summary> /// 开始检查更新 /// </summary> private void BeginCheckVersi...原创 2020-04-28 16:01:57 · 633 阅读 · 0 评论 -
资源下载(3)——显示下载的文件大小并写入本地资源信息文件
保存版本文件下载完毕,保存资源版本号保存资源版本号,所有资源下载完毕之后保存一下下载中的时候,把下载了多少字节传回去loading界面监听界面更新开始下载的时候界面显示资源版本号...原创 2020-04-28 00:12:31 · 234 阅读 · 2 评论 -
LuaFramWrok对资源更新处理
GlobalGenerator完成初始化后交给GameManagerUtil类 取得数据的存放目录 /// 取得数据存放目录,资源下载到本地的目录 public static string DataPath { get { //获取游戏的名称,SimpleFramework ...原创 2018-07-29 15:20:46 · 321 阅读 · 0 评论 -
设置脚本执行顺序
第一步:选中脚本然后把脚本拖入到这里调整到DefaultTime前面然后点击Apply原创 2020-04-27 10:40:15 · 330 阅读 · 0 评论 -
游戏资源下载(2)——多文件加载并动态分配下载任务
多文件下载,把文件加入链表中限定数目5个原创 2020-04-26 19:43:46 · 236 阅读 · 0 评论 -
游戏资源下载(1)——使用下载器下载资源并支持断点续传
断电续传的原理,比如下载了100兆,把文件保存下来,下次下载的时候把文件位置当参数传递给cdn,然后接着从后面继续下载文件下载器using System;using System.Collections;using System.Collections.Generic;using System.IO;using UnityEngine;using Unity...原创 2020-04-26 14:41:43 · 331 阅读 · 0 评论 -
资源管理(24)优化资源打包的加密,优化场景中不显示自定义shader问题
第二次打包的时候会检测文件有没有变化,文件没变化的时候资源包是不变的加密会把已有的资源包异或一下,执行加密方法的时候,不知道表格有没改动打包之前先找一下资源,把已加密的资源删掉,重新加密,然后再重新加密IsDelete,打包之前进行删除,打包之前通过.manifest判断文件有没改动加载Shader的时候,shader也是AssetBundle,shader...原创 2020-04-23 19:57:19 · 295 阅读 · 0 评论 -
资源管理(23)场景加载进度&优化UI框架及事件传参
ui预设表多语言表加载场景之前把loadingUI加载出来打开界面的时候添加了委托原创 2020-04-23 01:43:38 · 133 阅读 · 0 评论 -
资源管理(23)场景优化分级加载
场景优化一、如果是低配机,石头可以不加载,必须加载出来的如果是中配机,可以把石头加载出来,如果是高配机,可以把特效粒子全部加载出来二、一般用的4分法场景表,逻辑上的场景场景表Sys_Scene一个逻辑场景对应一个或者多个sceneSys_SceneDetail,场景配置表低配机加载0,中配机加载01,高配机加载012场景的加载和卸载全部依...原创 2020-04-22 01:29:06 · 595 阅读 · 0 评论 -
资源管理(22)实例和资源实体建立关联,动态回池分类资源实体,并释放内存资源
Instance是用Asset克隆出来的ResourceEntity描述的是在内存种的信息,窗体是通过ResourceEntity的Target来克隆出来的,两者的对应关系存在InstanceReourceDic中,每克隆出一个实体,就存在一个Id资源实体的依赖关系,通过Assetinfo.json解析出来的是AssetEntity,就是下面的信息,只是存的信息...原创 2020-04-20 11:23:53 · 348 阅读 · 0 评论 -
资源管理(21)分类资源池释放锁定资源包解决字体重复加载
运行游戏采样Window=========>Analysis=========>Profiler===========>然后点击TakeSampleEditor采样Texture2D图集,Sprite具体的小图关掉界面后,UI资源还存在,不需要依赖Assetbundle按下C,卸载分类资源池中的所有资源池的资源没有了采样一下,内存中还...原创 2020-04-18 13:36:43 · 177 阅读 · 0 评论 -
资源管理(20)编写和使用分类资源池(AssetPool)缓存资源
加了AssetPool先从AssetPool中去取,没取到从AssetbundlePool中取AssetBundle然后加载,还没取到就去加载AssetBundle分类面板显示代码,设置属性加载任何一个资源, 最后都会走到第一步是从池中去取,先从AssetPool取,如果没有再去走资源包,走资源包加载出资源之后把资源加到As...原创 2020-04-16 20:01:22 · 232 阅读 · 0 评论 -
资源管理(19)编写主资源加载器MainAssetLoaderRoutine加载UI镜像
/// <summary> /// 打开UI窗口 /// </summary> /// <param name="uiFormId">窗口Id</param> internal void OpenUIForm(int uiFormId, object user...原创 2020-04-16 01:52:11 · 227 阅读 · 1 评论 -
资源管理(18)从AssetBundle中加载xLua脚本启动xLua框架
表格加载完毕会调用lua脚本的初始化从自定义的loader中加载LuaManager完整代码 public class LuaManager : ManagerBase { /// <summary> /// 全局的xLua引擎 /// </summary> ...原创 2020-04-14 13:39:07 · 748 阅读 · 0 评论 -
资源管理(17)AssetBundlePool资源包池管理和释放资源包
从Assetbundle中加载完内存之后,把Bundle卸载掉把Assetbundle加到池里面,由池AssetbundlePool定时去卸载资源池使用的时候需要注册,因为加载Asse或者Assetbundle的时候,使用的是异步加载,异步加载是需要时间的,不能Spawn的时候立刻new出来一个,先加载出来然后注册到池里去,然后用的时候再去Spawn池里面存放的Resouc...原创 2020-04-14 02:22:58 · 408 阅读 · 0 评论 -
微信登录支付IOS和安卓流程
检查是否安装了微信点击微信登陆时候本地账号不存在的话弹快速登陆,苹果的微信接口登陆微信授权的结果返回调用此方法微信登陆的回调登陆的时候向微信注册微信返回信息...原创 2020-04-13 00:49:46 · 218 阅读 · 0 评论 -
资源管理(16)资源加载器异步加载Asset来实现表格数据读取
资源加载器链表实例化更新加载资源,从池里面拿到一个加载器,然后循环,加载完毕后从加载器列表移除,回池 #region LoadAsset 从资源包中加载资源 /// <summary> /// 加载中的Asset /// </summary> private Dictionar...原创 2020-04-13 00:45:45 · 294 阅读 · 0 评论 -
资源管理(15)—— 使用资源包加载器异步加载
编辑器移动路径需要修改以前场景的后缀用的是.unity3d,现在统一改为assetbundle以前生成版本文件的时候不包含扩展名name,现在把扩展名加了回来。版本文件包含扩展名下面开始加载资源包资源包加载器资源包加载器namespace YouYou{ /// <summary> /// 资源包加载器 /// ...原创 2020-04-11 01:54:53 · 254 阅读 · 0 评论 -
资源管理(14)—— 预加载流程中加载资源信息
这两个文件是通过打包工具生成的(记录依赖关系的资源信息和记录版本文件的)进入游戏后首先加载依赖关系对资源进行了分类声音,自定义Shader,表格,特效资源,角色特效预设,UI特效预设,角色预设,角色资源,场景,字体,UI预设,UI资源,Lua脚本/// <summary>/// Asset分类/// </summary>pu...原创 2020-04-10 01:02:47 · 242 阅读 · 0 评论 -
资源管理(13)——判断只读区和CDN资源版本号是否一致准备进入预加载流程
如果一致进入预加载流程,TODO的用法然后打开VS的视图,然后任务列表,能看到将来你要做哪些东西原创 2020-04-08 01:10:10 · 252 阅读 · 0 评论