【以及好久没上号的闲聊】Unity记录8.1-地图-重构与优化

最近几年越来越懒,要是能分身多好哇,大家教教我

懒得更CSDN了,所以不是很常上号,而CSDN的两周前私信显示的灰灰的

也就是虽然我每次上号都有看私信,但是搞笑的是前面四个明显的消息全是CSDN的广告,我压根没看到两周前未读的私信

很抱歉各位私信的好同志们这么久没回

所以我特意找出了我这个游戏的开源起始篇,这篇我甚至在我自己博客上都还没发出来

我的博客:mwhls.top

虽然这个游戏可能还得再做好几年吧,反正做的挺爽的

我现在博客里面更到7.3节,而后面还有53节没有放出来(因为担心全部放出来,我要哪个月忙起来一整个月都可能发不了文章)

我去,7.3节也只是第35节,这下存稿比发的还多了

我猜大家不会想我,就像我看文章都是看完就忘一样,但要是大家想我可以来我博客里面嘛

或者私聊找不到我可以发我邮箱:pan45015763@163.com

然后再推荐一下我最新的AAAI 2025 Oral工作Fair Training with Zero Inputs,它的实现很简单,我能想到的任务都能用上它,而且还能根据各任务专门设计,不过等有机会再向大伙宣传吧,这个点我博士没申offer也没呢
此外想赚点外快了,大伙有啥计算机或者AI方向的需求可以来找我,联系我邮箱,私聊不一定看得到,pan45015763@163.com
汇总:Unity 记录

开源地址:asd123pwj/asdGame

摘要:用一个统一的基类重构大部分代码,优化tilemap加载速度,实现伪3D效果,仅留下一个脚本对MonoBehaviour依赖。

开源-2024/08/18
  • 今日开源,协议是LGPL V3.0,开源地址:asd123pwj/asdGame
  • 这是我备份中的第17个版本,前16个版本都是实现完整的(但不是功能完整),只有第17个版本是还在修改的,所以版本号是0.16b。
周期运行-2024/08/19
  • 尽可能的把所有的周期运行的函数放在一起调用。
    • 写了一个UpdateSystem,没有什么技术含量,就是单纯计时,超时运行并恢复,不放代码了。
tilemap绘制性能优化-2024/08/23
  • Unity Profiler这个内置工具可以查看耗时。
  • 但不管怎么换tilemap.SetTile的方式,都是那么久,12500格就要50毫秒,如果一直刷新就会特别卡
tilemap绘制性能优化的另一条路-2024/08/26
  • 把区块从50x50调成32x32了,tile从50x50调成40x40,碰撞体改成了正方形。
    • 快多了,虽然还是有一丢丢卡顿感觉。5000 tile大概5ms。
  • tile从50调40而不是32是因为我想到了一种伪3D的tile,效果还不错,
    • 不过没有现成的ruleTile,我简化成两个tile了,原来用的terrainTile是15个tile。
    • 而且我画画的水平提高了呢,感觉还挺好看。
重构-2024/08/23-2024/08/28
  • 把update统一到了一个类的函数里。
  • 写了一个BaseClass,用作基类,现在不用再费心思写各种初始化了。
  • 只留下了一个类对MonoBehaviour依赖。
csharp 复制代码
public class BaseClass{
    // ---------- System Tools ----------
    public static SystemManager _sys;
    public GameConfigs _GCfg { get { return _sys._GCfg; } }
    public ControlSystem _CtrlSys { get { return _sys._CtrlSys; } }
    public InputSystem _InputSys { get { return _sys._InputSys; } }
    public TilemapSystem _TMapSys { get { return _sys._TMapSys; } }
    public ObjectSystem _ObjSys { get { return _sys._ObjSys; } }
    public UISystem _UISys { get { return _sys._UISys; } }
    public MaterialSystem _MatSys { get => _sys._MatSys; }
    public UpdateSystem _UpdateSys { get => _sys._UpdateSys; }
    public CameraManager _CamMgr { get => _sys._CamMgr; }
    // ---------- Config ----------
    public float update_interval = 0;
    // ---------- Status ----------
    public bool _initDone = false;


    public BaseClass(){
        init().Forget();
    }

    public virtual void _update(){
    }

    public virtual bool _check_loaded(){
        return true;
    }

    public virtual void _init(){}
    async UniTaskVoid init(){
        while (true){
            if (!_check_loaded()){
                await UniTask.Delay(100);
                continue;
            }
            _init();
            register_update();
            _initDone = true;
            break;
        }
    }

    void register_update(){
        MethodInfo method = GetType().GetMethod("_update");
        bool is_overridden = method.DeclaringType != typeof(BaseClass);
        if (is_overridden){
            _UpdateSys._add_updater(_update, update_interval);
        }
    }
}
相关推荐
猫头虎1 小时前
如何在浏览器里体验 Windows在线模拟器:2026最新在线windows模拟器资源合集与技术揭秘
运维·网络·windows·系统架构·开源·运维开发·开源软件
修己xj3 小时前
从“死了么”到“活着记”:用Gmeek在数字世界留下思想印记
开源
鼎道开发者联盟5 小时前
2025中国AI开源生态报告发布,鼎道智联助力产业高质量发展
人工智能·开源·gui
大厂技术总监下海5 小时前
Rust的“一发逆转弹”:Dioxus 如何用一套代码横扫 Web、桌面、移动与后端?
前端·rust·开源
DisonTangor8 小时前
阿里Qwen开源Qwen3-VL-Embedding 和 Qwen3-VL-Reranker
人工智能·搜索引擎·开源·aigc·embedding
搬砖的kk10 小时前
Cordova 适配鸿蒙系统(OpenHarmony) 全解析:技术方案、环境搭建与实战开发
华为·开源·harmonyos
猫头虎10 小时前
2026最新|GitHub 启用双因素身份验证 2FA 教程:TOTP.app 一键生成动态验证码(新手小白图文实操)
git·开源·gitlab·github·开源软件·开源协议·gitcode
REDcker10 小时前
Mach3、Mach4与开源数控软件对比分析
开源·加工·数控·机床·mach3·mach4·数控加工
java_logo10 小时前
Dify 开源 LLM 应用开发平台企业级 Docker Compose 部署手册
docker·容器·开源·dify部署·dify部署文档·dify部署方案·dify部署教程
_小苔藓_10 小时前
混合Token与LoRA结合Qwen3-VL高效微调(代码开源)
深度学习·开源·大模型·微调·多模态