2023-07-11 21:17:06
ref:需调用前显式初始化变量(如int x = 0; Method(ref x);)。
out:无需初始化,但方法内必须赋值(如Method(out int y);),常用于返回多个值(但元组更现代)。
Native Memory:由开发者手动分配/释放(如C++的malloc/free),易内存泄漏。
Managed Memory:由CLR(如Unity的Mono/IL2CPP)自动垃圾回收(GC),开发者无需直接干预。
Native内存直接操作硬件,效率高但风险大。
Managed内存因GC暂停(STW)可能引发卡顿,但安全性高。
Native:高性能需求(如图形渲染、物理引擎)。
Managed:游戏逻辑、数据管理(如角色属性、任务系统)。
粒子组件启用Visible Mask并设为InsideMask。
添加空物体,挂载SpriteMask组件覆盖列表区域,调整Order in Layer控制渲染顺序。
传递列表的V4向量(如屏幕坐标)至Shader,用clip()函数丢弃区域外粒子。
直接使用Unity的Mask组件,但可能引发性能问题(如额外Draw Call)。
前向渲染:每个光源对每个物体逐个渲染,光源数量多时性能下降(O(n*m),n物体,m光源)。
延迟渲染:先渲染几何信息(G-Buffer),再在屏幕空间合并光照,光源数量影响小(O(n+m))。
前向:光源少、移动端(兼容性更好)。
延迟:复杂光照、PC/主机端(需支持MRT)。
Git:每个开发者拥有完整仓库副本,支持离线提交。
SVN:依赖中央服务器,需联网操作。
Git:分支创建/切换快(指针操作),合并冲突处理更灵活。
SVN:分支为服务器路径拷贝,操作较重。
Git:基于哈希的存储,克隆大型仓库慢但后续操作快。
SVN:线性历史,简单场景下可能更快。
有序集合(Sorted Set):Redis的ZSET,按分数排序,支持高效范围查询(如ZREVRANGE rank 0 999)。
跳表/B+树:自实现时可选,支持O(log n)插入/查询。
按玩家ID分片存储,避免单节点瓶颈。
定期缓存前1000名至内存,减少数据库查询。