- 博客(152)
- 收藏
- 关注
原创 C# 写入文件比较
经排查BitConverter.GetBytes源码如下,是上面比较耗时的地方,并且每次都会创建数组。FileStream固定chunk写入,循环操作数组,耗时13.4126 ms。FileStream固定chunk写入,直接操作数组,耗时10.2729 ms。可以将上面改进一下,直接将代码内联进入上面代码上, 耗时2.8165 ms。StreamWriter每次写一个long 耗时44.0934 ms。FileStream每次写一个long 耗时20.5142 ms。数据长度:128188个long。
2023-10-24 12:01:19
573
原创 Odin常用记录
DisableIf(memberName, value)] 如果memberName==value 则禁用字段[EnableIf][HideIf][ShowIf][DisableInPlayMode] 播放模式禁用 [HideInEditorMode]播放时显示 [HideInPlayMode]播放模式下隐藏。[OnInspectorGUI(“GUIBefore”, “GUIAfter”)] 属性前后画东西。[SuffixLabel] 后缀 比如[SuffixLabel(“ms”)]代表毫秒。
2023-04-25 12:03:21
838
原创 python 安装Crypto还是显示 ModuleNotFoundError: No module named ‘Crypto‘
python3报错:ModuleNotFoundError: No module named ‘Crypto‘
2023-03-15 15:31:39
1078
原创 Unity IOS打包、SDK接入记录等
archive失败 “errSecInternalComponent Command CodeSign failed with a nonzero exit code” 需要执行security unlock-keychain -p “jasper1hu” ~/Library/Keychains/login.keychain-db 网上找个没有-db,妈的Mac更新到某个版本就有这个-db了 艹!Mac删除证书 只能点击钥匙串做上角的登录后,然后右键删除才能删除。搜索删除是删不掉的,就他妈离谱。
2023-02-22 12:28:32
652
原创 UnityShaderLab读书笔记 第10章(Image Effect)
第10章 Image EffectShader除了可以去渲染物体,还可以修改已经渲染完成的图像,常用的有GrabPass和Post-ProcessingGrabPass属于Pass,运行时抓取物体所在屏幕位置的渲染图像,传给接下来的Pass进行图像处理定义形式– GrabPass{},通过_GrabTexture访问抓取的图像, 但是这种会对每个物体进行一次图像抓取,性能不好– GrabPass{“TextureName”},只会执行一次抓取,所有物体共用一张图像Shader "Hi.
2022-08-29 21:29:41
735
原创 InjectFix原理学习(实现修复加法的热更)
https://www.igiven.com/unity-2019-09-02-ilruntime/
2022-07-17 21:30:22
1380
1
原创 UnityShaderLab读书笔记 第7章(透明效果,透明混合、透明测试、模板测试)
第7章 透明效果不透明和半透明物体渲染顺序、混合效果、透明测试、模板测试
2022-04-18 22:51:45
4131
原创 UnityShaderLab读书笔记 第6章(光照模型)
第6章 光照模型本章主要内容光照模型:Lambert、Half-Lambert、Phong、Blinn-Phong等Lambert光照模型物体的颜色是由射进眼睛里的光决定的,有反射光和透视光漫反射满足Lambert定律:反射光的强度与表面法线和光源方向夹角成正比,公式如下Cdiffuse=(Clight⋅Mdiffuse)saturate(n⋅l)C_{diffuse}=(C_{light}·M_{diffuse})saturate(n·l)Cdiffuse=(Clight⋅Mdiff.
2022-04-05 21:25:31
3960
原创 [3D数学基础:图形与游戏开发]读书笔记 第12章(几何图元直线、AABB、球圆、平面、三角形、多边形)
第12章 几何图元矩形边界框 矩形边界框的限制是:边必须垂直于坐标轴,称为AABB(axially aligned bounding box轴对齐矩形边界框)OOB oriented bounding box(方向矩形边界框)AABB表示方法首先AABB满足一下条件xmin<=x<=xmaxx_{min}<=x<=x_{max}xmin<=x<=xmaxymin<=y<=ymaxy_{min}<=y<=y_{max}ymin.
2022-03-27 21:17:01
4406
原创 [3D数学基础:图形与游戏开发]读书笔记 第10章(3D中方位与角位移)
第10章 3D中方位与角位移3D中有很多方法来描述方位和角位移,本章将主要讲解的是,矩阵、欧拉角、四元数,需要了解到其优缺点、工作原理,在不同情况选择最合适的描述,转换等矩阵形式矩阵优点利用矩阵可以在物体和惯性坐标系间旋转向量矩阵形式被图形API所使用多角位移连接:知道A关于B的方位和B关于C的方位,利用矩阵可以知道A关于C的方位矩阵的逆,撤销操作,旋转矩阵是正交的,所以可以很方便的求得逆矩阵...
2022-03-10 22:45:34
4584
原创 Unity资产文件浮点数修改为定点数工具记录
网络同步验证需要定点数,但是项目中大量资产文件使用了浮点数,需要工具来统一修改为定点数通过将向浮点数添加特定的Attribute,并将类型替换成定点数类型,在OnPostprocessAllAssets时记录修改的cs文件GUIDstatic void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAsse.
2022-03-02 11:55:57
4120
原创 [3D数学基础:图形与游戏开发]读书笔记 第9章(矩阵的更多知识、行列式、逆、正交矩阵、4x4齐次矩阵)未完待续
第9章 矩阵的更多知识矩阵的行列式任何一个方阵都存在一个标量,称为行列式,非方阵的行列式是未定义的2x2矩阵行列式3x3矩阵行列式余子式 从M去除第i行和第j列剩余的矩阵,代数余子式是标量如何求出n*n行列式 这里求的是4x4行列式行列式的重要性质矩阵积的行列式等于矩阵行列式积 |AB| = |A||B|,这个可以拓展到多矩阵情况矩阵转置的行列式等于原矩阵行列式 ∣MT∣=∣M∣|M^T| = |M|∣MT∣=∣M∣矩阵任意一行或任意一列全为0,行列式为0交换矩阵的任.
2022-02-27 22:50:28
2766
原创 [3D数学基础:图形与游戏开发]读书笔记 第8章(矩阵和线性变换、旋转、缩放、投影、镜像、切变、变换组合、变换分类)
第8章 矩阵和线性变换线性变换 重要的性质就是不包括平移,线性变换可以使用3x3矩阵表示,包含平移的叫做仿射变换考虑一下3x3的矩阵到底可以变换什么?变换一个物体的坐标和变换坐标系这两个其实是等价的2D中的旋转围绕点旋转3D旋转 围绕轴旋转,可以由上面的2D延伸出来,假设z轴方向向里,那么其实上面的公式就是沿着z轴旋转,那么公式如下,并且绕x、y都可以由此推导出来3D中任意轴旋转上面的3D是按照标准轴旋转的,如何延伸出围绕任意轴旋转的矩阵呢?上图是v向量绕n(单位向量)旋转,需.
2022-02-22 22:27:44
1147
原创 [3D数学基础:图形与游戏开发]读书笔记 第3、5、6、7章(多坐标系、向量运算、3D向量类、矩阵)
第1章 简介第2章 笛卡尔坐标系前两章没讲什么,有兴趣的自己看第3章 多坐标系惯性坐标系 原点在物体坐标系,方向和世界坐标系平行为什么要关心坐标系 从物体坐标系到关系坐标系只需要旋转,从惯性坐标系到世界坐标系只需要平移坐标系的转换...
2022-02-22 19:24:51
716
原创 Unity播放广告切到后台,返回Unity广告消失问题
参考这位博主(https://blog.youkuaiyun.com/jyg3103/article/details/106525719)Activity4种模式(https://blog.youkuaiyun.com/zy_jibai/article/details/80587083)Android文档(http://www.android-doc.com/guide/components/fundamentals.html)isTaskRoot解释(https://www.jianshu.com/p/eea14ca0b.
2022-02-17 15:30:19
2775
原创 CLR Via C# 读书笔记-第26、27章(线程基础、计算限制的异步操作)
第 26 章 线程基础为什么支持线程进程是什么? 进程实际上是应用程序实例要使用的资源集合,每个进程被赋予一个虚拟地址空间,来确保一个进程的代码和数据无法被其他进程直接访问,并且进程无法访问OS代码和数据,但是如果只有一个CPU,执行死循环,虽然没法破坏数据,但是仍然会出现无法响应的情况。所以提出了线程,线程是对CPU的虚拟化线程的开销和一切虚拟化机制一样,线程需要时间上和空间上的消耗线程要素– 线程内核对象(thread kernel object) OS 为系统中创建的每个线程都分.
2022-02-12 16:58:04
296
原创 CLR Via C# 读书笔记-第24章(运行时序列化)
第 24 章 运行时序列化序列化是什么?对象转化为字节流的过程,字节流转化为对象叫反序列化应用程序状态可以很轻松保存在磁盘文件或数据库中,并在下次运行应用程序时恢复一组对象可以复制到系统粘贴板,并复制到同一个或其他应用程序中一组对象可以通过网络发送到另一台机器运行的进程中下面是简单的序列化和反序列化class MainClass{ public static void Main() { var objs = new List<string> {.
2022-02-11 14:33:21
621
原创 CLR Via C# 读书笔记-第21章(托管堆和垃圾回收)
第 21 章 托管堆和垃圾回收应用程序受进程虚拟地址空间影响、32位进程最多分配1.5G、64位进程最多分配8TBC# new一个对象,首先计算类型字段以及基类大小,然后还需要分配2个固定字段分别为类型对象指针、同步块索引32位进程以及64位进程分别会占用32位和64位引用计数法最大的问题就是循环引用问题引用跟踪法 首先跟踪法将只关心引用类型的变量称为根,GC时标记所有可达对象,如果一个对象已经被标记将不会被重复标记(这样解决了引用计数的循环引用问题)、然后进行压缩(也可以说是碎片化整理)使所有.
2022-01-24 20:18:42
446
原创 CLR Via C# 读书笔记-第5章 基元类型、引用类型、值类型
基元类型基元类型 编译器直接支持的数据类型 e.g. int byte等表达式中如果都是字面值,编译时就会完成表达式求值,从而提高性能引用类型和值类型非托管代码C/C++中定义类型后,使用该类型的代码决定在哪分配实例。而在托管代码中由定义类型的人员决定在哪分配实例。设计值类型应当考虑实参、返回值均会设计值类型字段拷贝,造成性能损失。将值类型变量复制给另一个值类型变量,将会逐字段复制CLR会控制类型字段的布局,引用类型默认StructLayoutAttribute.Auto,值类型默认.
2022-01-06 20:25:35
171
1
原创 CLR Via C# 读书笔记-第18、19章(定制特性、可空值类型)
第十八章 定制特性AttributeUsage中有3个字段– m_attributeTarget 特性应用的目标– AllowMultiple 对单个元素是否可以应用多次– Inherited 特性应用于基类时,是否同时应用于派生类如何检测特性的存在?– 首先来看System.Reflection.CustomAttributeExtensions类中定义的方法,里面其实就是3个方法IsDefined、GetCustomAttributes、GetCustomAttribute,其中如果只想.
2022-01-06 20:22:51
221
原创 CLR Via C# 读书笔记-第14章(字符/字符串/文本处理)
十四章 字符、字符串、文本处理字符字符定义在System.Char中,16位Unicode,其中定义了常量public const Char MinValue = '\0'public const Char MaxValue = '\uffff'
2021-12-23 20:33:25
373
原创 CLR Via C# 读书笔记-第9、10、11、12、13章(参数、属性、事件、泛型、接口)
第九章 参数以传引用的方式想方法传递参数out和ref对于CLR没啥区别,生成的IL代码基本一样。而out和ref对于C#来说,out代表在传参数时,被调用的方法不指望你以及初始化好了,所以不会去读参数的值,最后必须向参数写入。而ref,调用者必须初始化好,被调用方法可以读或写。第十章 属性匿名类型和元组被创建出来,就不可以改变...
2021-12-15 09:44:42
177
原创 CLR Via C# 读书笔记-第6、7、8章(类型和成员基础、常量和字段、方法)
不显示 定义类型的public或private,会默认为internal成员访问性定义,规则C# → CLR, protected → Family、internal → Assembly、其他都差不多public → Public这样的
2021-12-06 12:42:15
372
原创 CLR Via C# 读书笔记-第4章 类型基础
new()一个类型的步骤计算类型及其基类所定义字段和开销成员(类型对象指针、同步块索引)的字节托管堆分配需要的字节初始化类型对象指针、同步块索引最后调用类型实例构造器,传递new的参数类型转换通过is进行类型判断、显示转换可以通过(TypeName)转换,但是一般使用as 可以提高性能命名空间和程序集...
2021-11-24 09:51:47
182
原创 golang基础学习(go程、信道)
go程、信道go程 轻量级线程下面程序流程main中启动2个拼接字符串的go程,明显可以看出hello拼接耗时更短、world拼接耗时很长随后使用res_1接收信道c中的数据流(此时阻塞),当hello先行拼接成功,数据流成功从c流向res_1后,执行fmt打印res_1func say(s string, delay int, c chan string) { var res string for i := 0; i < 5; i++ { time.Sleep(time.Du.
2021-10-29 17:15:15
296
原创 golang基础学习(结构、接口)
结构体如何给结构体创建方法?函数名前面e,g, 下面的(t T)叫做接收者,是一个特殊的参数,下面的A和B均叫做方法无法给内置类型创建方法,只能给自定义创建接收者,拥有值接收者和指针接收者区别值接收者 对传入的T类型的副本产生作用指针接收者 对传入的T类型直接进行操作,具体理解看下面指针可以直接操作方法,但是函数必须要传入对应类型的参数普通函数 参数如果不是指针 也是值传递(意味着操作的是参数的拷贝)func main() { var t T t = T{1, 2} fmt.Pr.
2021-10-29 16:05:26
181
原创 golang基础学习(defer、条件、循环、指针、切片、闭包)
指针基础理解package mainfunc main() { var ptr *int var pptr **int temp := 1 ptr = &temp pptr = &ptr println("ptr", ptr) //存放temp的地址 println("ptr.value", *ptr) // temp的值 println("ptr.address", &ptr) // ptr的地址 println("pptr
2021-10-25 16:18:04
161
原创 UGUI练习 - 无限滚动列表、数据模拟操作
项目地址效果图思路判断最上方和最下方边界,如果最上方Item不在显示页面了就移动到最下方,如果最下方Item不在显示页面就移动到最上方,边界就用RectTransfrom.GetWorldCorners获取实现了思路1时,只是可以无限滚动效果但是真实情况要和数据结合在一起,我这边是使用一个Vector2Int _windowEdge字段,其中x代表当前页面显示的第一个数据索引,y代表当前页面显示的最后索引,可以当做一个数据窗口,当进行思路1中在向最下方/最上方移动时这个窗口会向下/向上移动.
2021-09-14 17:18:27
222
原创 UGUI练习 - Tab选项卡以及自定义灵活网格
原作者视频项目地址这个练习是Tab和自定义网格布局组合完成的具体效果如下Gif图首先Tab功能就是TabGroup负责控制每一个TabButton对鼠标进入、离开、选择,针对进入和离开做出不同的反应,针对选择选择激活相应的GameObject,代码就是2个脚本很简单,可以直接看上面项目脚本。从上面Gif中可以看到每个页面都有不同的网格布局,并且都是同一个布局组件实现的。如果想实现自定义布局需要继承LayoutGroup抽象类具体如下代码,覆写的这个函数看名字很奇怪是计算布局的垂直..
2021-09-10 10:18:36
566
原创 UGUI练习 - 提示框
原作者视频简单的提示框功能效果图:制作提示框,各个组件的用途提示框有标题和内容,这个是上下布局所以用VerticalLayoutGroup,Padding设置上下左右以及上下内容元素的间距,Control Child Size内容元素的大小将会自己调节,Child Force Expand元素将会自动铺满。Content Size Fitter Tips Bg将会根据内容大小将会自己调节Layout Element TextMeshPro里面的文本将会一直往后排列,像下面这样。2..
2021-09-09 09:55:09
206
原创 Windows安装使用Jenkins、SVN打包Android项目
下载安装官网:https://www.jenkins.io/download/然后安装需要选择Java,可以通过命令java -verbose查看,输入密码
2021-09-06 09:25:57
166
原创 网络游戏同步(帧同步详细学习...demo未完成)
因为网络同步这块只是学了点理论基础,面试时候被问的很细,才发现自己这方面只是了解了皮毛,所以这里单独开个帖详细学一下,然后做一个Demo来巩固一下。理论学习:是知乎这篇文章,主要是这篇文章举的例子很容易理解,大家可以看一下。帧同步怎么理解?根据上面知乎举例,可以这么理解,老师每天晚上来收集每个同学的作业,收集完成后,分发给所有同学,让同学自己去批阅作业,如果是老师自己批阅打分就是状态同步,所有同学打分机制都是一样的,这样才能达到相同的结果。严格帧同步就是老师得把所有同学作业都收上来才行,否则大.
2021-09-01 09:31:31
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人