- 博客(7)
- 收藏
- 关注
原创 Unity Dots与ECS 基础(二)
前文中说过,ECS的核心就是多线程并发与紧凑化数据处理。前者我们经常听说,后者则是最常见的内存数据结构之一,代表类型就是数组与数组列表(其在栈上是元素紧密排列的,只是存放的对象可能是某些堆上对象的指针,不要错误的把object=List[x]理解为堆上的List在x下标处存放了一个object)。这一部分先从后者开始谈起,第一是更简单,第二是多线程并不一定需要使用,但内存一定要时刻注意,单线程也可以面向数据编程,而高效的数据存储方式决定了大规模数据处理的效率高低,哪怕不引入多线程也可以有明显提升。
2024-02-23 13:16:26
1457
原创 Unity Dots与ECS 初学(一)
Dots是一种面向数据编程的技术栈,全名为Data-Oriented-Technology-Stack。其由三个部分组成:Job System、ECS、Burst Compiler。多线程管理系统,发挥多核cpu的性能,Entity即实体,Component装载组件数据,System则是代码算法;ECS可以将数据与行为分离,让数据紧密排列,减少内存碎片的产生(Burst Compiler:一种代码编译生成器,只学ECS的使用可以不管其内的运作原理,只要知道它可以即可,会自动执行的。
2024-02-19 01:51:16
792
原创 Unity踩坑——使用shader修改图片效果
为了实现2D游戏一个需求,我需要对SpriteRenderer中的image做fill效果,因为SR的填充方式只有simple、tiled和sliced,所以考虑使用shader做修改。可实现fill效果的shader很多,这里不贴代码了,主要是说明后续情况。后来的问题是,尝试将image合并成单一图集合批优化,但是这时候发现shader对图片的操作偏移了。 在网上找了很多资料,但是都没有用,只好自己通过git一个个提交去定位。经过多次定位后,发现直接用...
2022-03-31 01:50:26
3627
2
原创 Mysql实现Oracle中的Start with ... Connect by
工作需要,迁移数据库时发现使用了Oracle中的start with来进行树的递归查询,所以自己动手丰衣足食。通过一番搜索后发现,大家的实现基本都是这样的:CREATE FUNCTION queryChildrenAreaInfo(areaId INT)RETURNS VARCHAR(4000)BEGINDECLARE sTemp VARCHAR(4000);DECLARE sTempChd VARCHAR(4000);SET sTemp='$';SET sTempChd = CAST(a
2020-08-04 13:29:43
2642
1
原创 老鼠毒药问题的思考
1000瓶酒中有2瓶毒药,由于总分配有499500中,且一只老鼠非生即死,只能提供1bit的信息,所以我们可以认为,最少需要的老鼠为19只(2^18=262144)。我们可以发现,当总共只有两瓶酒时,你需要0只老鼠,当有三瓶酒时,你只需要2只老鼠,当只有4瓶酒时,你只需要3只,而当你有8瓶时,却只需要6只,9瓶也是6只,16瓶时只需要8只,25瓶是9只最佳,27瓶也只需要9只。上面的做法是基于开方和开三次方所获取的最佳做法,我们知道,如何尽可能少的用两个数字表达更大的数(不存在0和1时),当其中一个数字
2020-07-10 18:12:21
653
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人