- 博客(74)
- 收藏
- 关注
原创 System.ExecutionEngineException: Method body is null.
把定义 extern 函数以及使用的部分抽出来放到 AOT 中类中。使用了 HybridCLR 热更新,在热更新代码中定义 extern 函数。
2025-03-21 16:58:30
311
原创 A scripted object (probably XXX?) has a different serialization layout when loading
项目中使用了HybridCLR,脚本被打入了热更新的程序集中。脚本挂载在场景中,场景打在主包的资源中。
2025-03-21 15:44:30
407
原创 Unity 开发中可能用到的类型
在 Unity 和 C# 中,有一些相对不常见但非常有用的类型,可以用来实现特殊功能。比如 Flags属性和其他一些较少用的类型。
2024-12-30 10:03:26
421
原创 The referenced script (Unknown) on this Behaviour is missing!
第4点中Unity 2022 如图。
2024-12-09 18:03:02
614
原创 UnityException: Instantiate failed because the clone was destroyed during creation.
【代码】UnityException: Instantiate failed because the clone was destroyed during creation.
2024-12-09 17:53:04
231
原创 Graphy 是一款终极、易于使用、功能齐全的 FPS 计数器、统计监视器和调试器,适用于您的 Unity 项目。
GitHub - Tayx94/graphy:Graphy 是适用于 Unity 项目的终极、易于使用、功能丰富的 FPS 计数器、统计监视器和调试器。
2024-11-30 15:31:37
402
原创 模拟弱网环境
clumsy,用于模拟 Windows Vista / Windows 7 及更高版本网络中断的实用程序 --- clumsy, an utility for simulating broken network for Windows Vista / Windows 7 and above。
2024-11-30 15:28:37
192
原创 分享:看小说的开源软件,没有广子以及付费
GitHub - gedoor/legado: Legado 3.0 Book Reader with powerful controls & full functions❤️阅读3.0, 阅读是一款可以自定义来源阅读网络内容的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。
2024-11-26 12:15:46
162
原创 分享:程序员怎么学习英语
关于本指南 · A Programmer's Guide to English。分享大佬写的文章,可以在其中学习到很多经验,主要是方法论。
2024-11-26 12:12:06
210
原创 快速计算浮点数表示范围
如果浮点数的阶码(包括1位阶符)用 R 位的移码表示,尾数(包括1位数符)用 M 位表示,则这种浮点数所能表示的数值范围如下:最大的正数:+(1 - 2^(-M+1)) × 2^(2^(R-1) - 1),最小的负数:-1 × 2^(2^(R-1) - 1)
2024-09-24 15:17:38
179
原创 《软件设计师》下午题型(一)—— 数据流图设计
它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。解,则称图 A 是图 B 的父图,图 B 是图 A 的子图。,即父图和子图的输入/输出数据流一致,这是找出遗漏数据流非常重要的技巧。其次,每个加工至少有一个输入数据流和一个输出数据流,反映此加工的数据来源和结果,加工的输出数据流应该都有其对应的输入数据流。再次,要找出遗漏的数据流,有时数据流平衡原则不作为解题的直接方法,而作为排除的手段,然后根据说明或其他方法找到图中遗漏的数据流。
2024-08-23 12:05:21
1186
原创 《Unity3D高级编程 主程手记》第四章 用户界面(六) UI 优化(上)
动”指的是元素移动,或放大/缩小频率比较高的 UI。“静”就是静止不动的 UI,准确的说是界面上不会移动、旋转、缩放、更换贴图和颜色的 UI。
2024-08-13 11:43:33
1273
原创 报错:ListenerException: Attempting to add listener with inconsistentsignature for event type XXX
多处添加监听,并且传递 MsgCallback 类型不一致。
2024-08-06 17:37:35
177
原创 《Unity3D高级编程 主程手记》第四章 用户界面(五) 快速构建一个简单易用的 UI 框架
首先它需要依赖 Unity3D 的 Animator 组件 [RequireComponent (typeof(Animator))]其次它要有播放(Play)接口用来播放指定动画,这里 Play 的参数包括动画名、播放完毕后的回调函数委托等。再次在 public 变量中需要 AutoPlay 这个参数,这样美术人员就可以在 Unity3D 界面上设置自动播放而无需程序调用了。最后需要在自动播放时选择指定的动画名和是否循环播放,以及循环播放间隔。
2024-08-06 17:30:06
1279
原创 《Unity3D高级编程 主程手记》第四章 用户界面(四) UGUI 核心源码
我们常用的组件 Image、RawImage、Mask、RectMask2D、Text、InputField 中,Image、RawImage、Text 都是继承自 MaskableGraphic ,而 MaskableGraphic 又继承自 Graphic 类,因此 Graphic 相对比较重要,它是基础类,也存放了核心算法。所有核心部分都围绕着如何构建网格、谁将重构,以及如何裁切来进行的。,它内部采用 List 容器对象池,将所有使用过的废弃的数据都存储在里对象池的容器中,当需要时再拿旧的继续使用。
2024-07-31 15:50:37
839
原创 《Unity3D高级编程 主程手记》第四章 用户界面(二) UGUI 系统的原理及其组件使用
UGUI 是,它的每个可显示的元素都是通过的形式来构建起来的。当 UI 系统被实例化时,UGUI 系统首先要做的就是。Unity3D 在制作一个图元,或者一个按钮,或者一个背景时,都会。可以理解为制造了一个 3D 模型,用一个网格绑定一个材质球,材质球里存放要显示的图片。如果每个元素都生成一个模型并且绑定一个材质球存入一张图片的话,那么界面上成千上万个元素就会拥有成千上万个材质球,以及成千上万张图。
2024-07-25 14:20:04
1003
原创 Cannot perform upm operation: connect ETIMEDOUT 34.36.199.114:443 [NotFound]
问题:打开 Package Manager,加载报错。版本:Unity 2018 Windows。
2024-07-22 15:18:30
660
原创 《Unity3D高级编程 主程手记》第二章 C#技术要点(八) 业务逻辑优化技巧
不只是算法能大幅度提高业务逻辑的效率,普普通通的业务代码也同样可以有质的飞越。优秀程序员常关注代码对性能的影响,普通人只关注是否能完成功能,这样日积月累代码质量就会形成差距。
2024-07-20 16:47:28
1252
原创 什么是字节对齐?怎么计算struct占用多少个字节?
现代计算机中内存空间都是按照 byte 划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。指定对齐值:编译器或者程序员指定的对齐值,packLen。默认对齐值:结构体中每一个数据成员及结构体本身都有默认对齐值,记为defaultLen。成员偏移量:即相对结构体起始位置的长度,记为offset。成员长度。
2024-07-19 16:13:56
791
原创 《Unity3D高级编程 主程手记》第二章 C#技术要点(一) Unity3D中的C#的底层原理
C#、VB、J#这些遵守CLI规范的高级语言,会被各自的编译器编译成中间语言 IL,当需要运行他们时就会被实时的加载到运行库中,由虚拟机动态地编译成汇编代码(JIT)并执行。IL2CPP 有自己的虚拟机,该虚拟机不执行 JIT 或翻译代码,主要用于内存管理,其内存管理才有类似 Mono 的方式,程序员无需关心两者的内存差异。首先由 Mono 将 C# 翻译成 IL,再将 IL 重新变回 C++ 代码,再有各个平台的 C++ 编译器直接编译成能运行的机器码。,虚拟机不能跟踪这类代码,需要手动管理。
2024-07-15 17:45:10
766
原创 《Unity3D高级编程 主程手记》第四章 用户界面(一) 用户界面系统的比较
从图集工具来看,NGUI有更多的自主选择权,而UGUI更多的自动化的便利,从组件支持度来看NGUI更适合快速原型,而UGUI更多的是需要自己编写适合自己的组件。从UI底层可定制度上看,两者都是可定制的,但NGUI更加方便。从输入事件处理上看,NGUI混合了物理系统,而UGUI有一套自己独立的事件系统。从层级显示上看,NGUI概念有点混淆,而UGUI层级概念清晰干净。从字体制作上看,NGUI麻烦了点,而UGUI更加方便。从社区完善上看,NGUI更加商业化,而UGUI有官方支持后台强大。
2024-07-11 15:01:52
388
原创 《Unity3D高级编程 主程手记》第三章 数据表(三) 多语言的实现
一般文字都会以 Key-Value 形式存放在 Excel 表里,就比如 Key 为 “RoleName”,Value 为 “角色名字”,或者 Key 为 “1101”,Value 为 “好友分享” 等。这种 Key-Value 形式一般会以 Int-String(整数对字符串)或 string-string(字符串对字符串)的形式存在。
2024-07-10 10:17:52
290
原创 《Unity3D高级编程 主程手记》第三章 数据表(二) 数据表的制作方式
最简单的就是直接将 Excel 里的数据复制粘贴到文本文件中作为游戏数据。手动导出为 CSV。使用 Shell 或 Bat( Window 批处理)设计自动化流程操作。通过特定语言编写自动化程序。使用 Jenkins 来强化自动化流水线。使用 Unity3D 的菜单栏编辑功能。
2024-07-09 18:28:22
595
原创 clean code-代码整洁之道 阅读笔记(第十七章 终章)
类的方法只应对其所属类中的变量和函数感兴趣,不该垂青其他类中的变量和函数。可以在从不被调用的小工具方法中找到,也可以在永不会发生的switch/case条件中找到。如果某个模块依赖于另一个模块,依赖就该是物理上的而不是逻辑再上的。没有实现的默认构造器、没有用到的变量、从不调用的函数、没有信息量的注释等等,这些都是应该移除的废物。如果你有个已知并该在较高抽象层级的默认常量或配置值,不要将它埋藏到较低层级的函数中。只要把计算过程打散成一系列良好命名的中间值,不透明的模块就会突然变得透明,这很值得注意。
2024-07-09 15:43:44
1295
原创 《Unity3D高级编程 主程手记》第三章 数据表(一) 数据表的种类
数据表相当于是一个外部的数据库,数据库中存储着与游戏人物相关的数据,只不过这个数据库里的数据是不能更改的。数据表是连接美术,设计策划,和程序的桥梁。
2024-07-08 20:19:14
647
原创 《Unity3D高级编程 主程手记》第一章 软件架构(二) 软件架构的思维方式
软件研发、系统架构中最重要的能力——抽象能力。架构师先要在大脑中,然后是,以及子模块之间的,然后是子模块,最后将子模块起来,形成最后系统。我们常说编程和架构设计就是搭积木,优秀的架构师受职业习惯影响,眼睛里看到的世界都是模块化组合方式。
2024-07-02 17:22:57
500
原创 《Unity3D高级编程 主程手记》第一章 软件架构(一) 架构的意义
实际上架构无处不在,它实质上是解决生活和工作中的问题的一种方案。在软件系统架构中,架构承担了解决项目从研发到上线运营的方案。项目中的每个子系统的都有自己的决策方向,而子系统的决策方向,把它们合起来加入一定的关联性就构成了一个完整架构整体,即每个系统、模块、组件都是软件系统架构中的一部分。优秀的架构师,需要对每个子系统决策的方向要进行深思熟虑,不仅只针对单个系统的决策方向,还要结合其他系统以及整体系统需求的方向进行决策。在架构中这五项能力缺一不可,某项能力特别突出也不能决定整个架构的好坏,综合因素才是。
2024-06-29 15:41:34
512
原创 clean code-代码整洁之道 阅读笔记(第十五章)
如此我们遵循了童子军军规。模块比我们发现它时更整洁了。不是说它原本不整洁。作者们做了卓越的工作。但模块都能再改进,我们每个人也有责任把模块改进得比发现时更整洁。本章将研判来自JUnit框架的一个代码例子。
2024-06-27 18:03:57
396
原创 《Unity3D高级编程 主程手记》第二章 C#技术要点(七) 各类搜索算法
广度优先搜索和深度优先搜索是最常见的搜索算法,但如果不进行些枝剪的话效率是比较差的,直接使用不加修饰的广度和深度算法,会消耗比较多的 CPU 以至于整体效率比较差。好的搜索算法,需要有数据结构的支撑,在数据结构里记录了信息的特征,每次搜索的痕迹和当前的内容环境都可以用于枝剪和优化。
2024-06-27 15:07:06
1000
原创 clean code-代码整洁之道 阅读笔记(第十四章)
许多种不同类型,类似的方法——听起来像是个类。ArgumentMarshaler的概念就是这样产生的。对Args类所做的最主要的修改是在监测部分。随着代码腐败下去,模块之间互相渗透,出现大量隐藏纠结的依赖关系。能工作的代码经常会严重崩溃。首先,每种参数类型都要有解析其范式元素、从而为该种类型选择HashMap的方法。要编写整洁代码,必须先写肮脏代码,然后再清理它。换言之,采用TDD,不会允许做出破坏了系统的修改。没什么能比糟糕的代码给开发项目带来更深远和长期的损害了。——创建合适的空间放置不同种类的代码。
2024-06-26 17:49:29
615
原创 国内镜像源网址
腾讯:腾讯软件源 (tencent.com)阿里:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)清华:清华大学开源软件镜像站 | Tsinghua Open Source Mirror
2024-06-25 18:28:43
867
原创 《Unity3D高级编程 主程手记》第二章 C#技术要点(六) 排序算法
基础能力决定你到底能走多远。我们不是写一两年程序就完事了,从毕业算起,我们可能要写20-30年的程序,这段漫长的长跑路程中,最终比的不是谁熟悉API比较多,也不是谁用插件用的有多熟练,更不是比谁更熟悉某软件,而是。
2024-06-25 17:07:14
726
原创 clean code-代码整洁之道 阅读笔记(第十三章)
就生成的字节码而言,对于在getNextId方法中执行的那两个线程,有12870种不同的可能执行路径。当然,多数路径都得到正确结果。这样一来,每个线程都像是世界中的唯一线程,没有同步需要。当存在一个主要为读者线程提供信息源,但只偶尔被作者线程更更新的共享资源,吞吐量就会是个问题。两个线程修改共享对象的同一字段时,可能互相干扰,导致未预期的行为。挑战之处在于平衡读者线程和作者线程的需求,实现正确操作,提供合理的吞吐量,避免线程饥饿。在另外的情况下,有可能复制对象,从多个个线程收集所有复本的结果,并在。
2024-06-25 16:06:44
702
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人