碰撞盒算法
前言这里是前言介绍。 正文[算法][包围盒]球,AABB,OBB参考地址请看图片水印:http://www.cnblogs.com/iamzhanglei/archive/2012/06/07/2539751.html http://blog.sina.com.cn/s/blog_6a1bf1310101g7zy.html 包围体是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的目的是快速的进行碰撞检测或者进行精确的碰撞检测之前进行过滤(即当包围体碰撞,才进行精确碰撞检测和处理)。包围体类型包括球体、轴对齐包围盒(AABB)、有向包围盒(OBB)、8-DOP 以及凸壳。如图 1 所示。 图 1 依次是球体、AABB、OBB 可以看到图 1 是 3D 包围体,在 2D 包围体如图 2 所示:图 2 依次是球体、AABB、OBB 包围球包围球碰撞检测方法是用球体包围整个几何体, 无论是几何体还是相交测试都很简单; 但是它的紧密性太差。因为除了在 3 个坐标轴上分布得比较均匀的几何体外, 几乎都会留下较大的空隙, 需要花费大量的预处理时间, 以构造一个好的层次结构逼近...
Unity 的 BUG 指南
前言总结归纳平常适用 Unity 的过程中遇到的问题。 正文UGUI 界面无法点击检查一下场景中是否存在 EventSystem 命名空间 System.Drawing 找不到打开 Unity 编辑器 - Edit-Project Setting-Player - 对应 PC 平台或者按照 -Api Compatibility Level 改为 .Net 4.x AssetBundle 卸载报错在调用 AssetBundle.Unload 方法时报错错误提示: 1Assertion failed on expression: 'm_PreventLoadingFromFile != nameSpaceI 原因: 创建一个有摄像头的预制件,在编辑器中创建一个渲染纹理,并将渲染纹理设置到相机上。将预制件构建成 assetbundle。当你卸载 assetbundle. 卸载(true)时,你会得到错误 msg:“mpreventloadingfromfile!=nameSpaceID。” 最主要的一点是,在 prefab 中,摄像头不能有一个渲染纹理,你可以在编辑器中创建...
Unity 破解
正文介绍 名字 网址 Ⅰ 本文以及所有标题和标签都是 AppNee 的原始内容。版权所有。要转发或复制,您必须在本文的 URL 旁添加一个明确的脚注! Ⅱ 严格禁止任何手动或自动的整个网站的收集 / 爬取行为。 Ⅲ AppNee 上共享的任何资源都仅限于个人研究和研究,严禁任何形式的商业行为。否则,您可能会收到各种版权投诉,并且必须自己处理。 Ⅳ 在使用(尤其是下载)AppNee 共享的任何资源之前,请先或多或少地阅读我们的 常见问题解答 页面。否则,请自行承担所有后果。 这项工作已根据知识共享署名 - 非商业性 - 相同方式共享 4.0 国际许可进行了许可。 Unity(简称:Unity3D / Unity2D,简称 U3D)是目前 由丹麦Unity Technologies 开发的最受欢迎的多平台免费游戏引擎(主要用 C,C ++ 和 C#编写,于 2005 年首次发布)。具有 C#和 JavaScript 编程经验的用户可以更快地入门。 作为跨平台且高度集成的游戏开发工具(即,专业游戏引擎的全面集成),类似于 Adobe Director,...
Lua 技巧
前言在平常开发过程中,总会遇到一些需求点,做下记录。 正文lua 中 . 和 : 的区别 首先在 lua 中使用 “:” 定义的函数会自动传入一个名为 self 的变量,这个变量是隐含的,self 同 c++ 中的 this 一样,表示当前对象的指针:而 “.” 定义的函数中没有 self。 12345678910111213function class:func2( ) endfunction class.func1(self) end -- 这时候这两个函数等价 function MainScene:ctor() self:ceshi(1,2,3)endfunction MainScene:ceshi(a,b,c) print(a,b,c)end> 输出: 1 2 3 table 排序1234567891011121314function asc() -- 升序 table.sort(test_table) endfunction desc() if args and #args > 1 then -- 做倒序处理 ...
C# 代码优化堆内存
前言在上期 《C# 代码优化:拯救你的 CPU 耗时》 中,我们依托 UWA 本地资源检测,从“时间” 的角度对 C# 代码检测中和 CPU 耗时相关的知识点为大家进行了简单的讲解。本篇将从 “空间” 角度入手,为大家继续梳理 C# 代码检测的相关规则。 C# 是在虚拟机(VM)环境当中运行的(Mono 虚拟机或 IL2CPP 虚拟机),其分配的堆内存是由虚拟机进行管理与回收的,因此,C# 代码被称为“托管代码”,其堆内存又被称为“托管内存”。托管内存的释放依赖于虚拟机的 GC(垃圾回收)机制,本文就不展开讨论了。 C# 程序开发要遵循的一个基本原则就是避免不必要的堆内存分配,而堆内存分配主要会造成以下后果: 程序所占用的内存总量过大。内存是有限的资源,对于游戏(特别是移动游戏)来说,内存的占用可谓是寸土寸金。过多的无法释放的内存很可能导致程序崩溃的现象。 过多的分配次数会导致堆碎片变多,从而可能导致无法开辟出所需要的连续的内存,这也会导致程序崩溃。 内存分配会触发 GC(垃圾回收),而 GC 的代价较高,会造成卡顿。 1、该类的方法中存在 .tag 的调用 ta...
C# 代码优化 CPU 耗时
前言之前,我们已经对 ** 本地资源检测 ** 中和资源 / Prefab 的内容做了总结(详情可扫描文末长图),后续 UWA 也会和大家一起努力,进一步丰富这些检测内容。今天我们要聚焦的是本地资源检测中的 C# 代码相关的检测项。 要保证游戏在流畅的帧率下运行,就要保证 CPU 和 GPU 能够及时地完成它们在一帧当中的“任务”。而本文我们讲解的这些 C# 代码的性能,就会影响到每帧 CPU 自身的耗时。当游戏出现帧率降低、间歇性卡顿甚至卡死等现象时,** 我们就需要考虑这是否是由开发者自己所编写的脚本性能较差所造成的。** 性能的优化问题,实际上是个 “时空问题”:我们要尽可能地节省运算所需的时间,节约内存上占用的空间。对 C# 代码的优化亦是如此,一方面是对 CPU 耗时的优化,一方面是对内存分配的优化。而“空间问题” 与“时间问题”又常常会相互转化——优化内存的目的之一,是减少 GC,这又可以归结为减少 CPU 耗时。本文要讲解的一系列规则,就是主要针对 CPU 耗时的规则。 1、类中存在 OnGUI 方法 规则里涉及到的 OnGUI,它是 Unity 的 IMGU...
EmmyLua 调试 Unity
前言以前用开发 lua 都是使用 sublime,但是 sublime 终究是一个编辑器,调试不是方便,后来在同事的引荐下,接触到了 Intellij IDEA,刚开始使用很不习惯,用了一段时间后,发现 EmmyLua + Unity 用起来很舒服,简单说一下配置过程 安装 Intellij IDEA我使用的是 **IntelliJ IDEA 2019.2.3 (Community Edition)**,这个版本不收费,但足够我们使用了,附上下载地址 https://www.jetbrains.com/idea/download/#section=windows,下载安装即可 安装 EmmyLua请注意,这里面是有坑的,如果你直接在 Settings->Plugins 中搜索 EmmyLua 安装,是不能调试的(曾经手贱,升级了一下插件,死活连不上),因为最新版的 EmmyLua1.3.2 更新日志中,有如下提示: 更新日志说:因为它经常被防病毒软件拦截,所以删除连接调试(wtf?!,开发机会装杀毒软件?!)所以不要用最新版的,去插件的官网下载老版插件(我用的 1.3...
红黑树
正文**R-B Tree 简介 ** R-B Tree,全称是 Red-Black Tree,又称为 “红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red) 或黑(Black)。 ** 红黑树的特性 **:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空 (NIL 或 NULL) 的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。 ** 注意 **:(01) 特性 (3) 中的叶子节点,是只为空 (NIL 或 null) 的节点。(02) 特性(5),确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对是接 ** 衡的二叉树。 红黑树示意图如下: ** 红黑树的应用 **红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是 O(lgn),效率非常之高。例如,Java 集合中的 TreeSet 和 TreeMap,C++ STL 中的 set、map,...
UGUI 源码分析系列
阅前提示该系列注重分析 UGUI 源码,来深入了解 UGUI 每个模块每个组件的实现原理,使我们对 UGUI 使用和拓展上更加得心应手。适合人群:UGUI 使用者,All阅读方式:文章 + 源码阅读本系列在不断更新中,如果对你有所帮助,可以点赞收藏:)UGUI 版本:2017.4源码地址 文章目录 [阅前提示](# 阅前提示) [总览图](# 总览图) Base UIBehaviour EventSystem CanvasUpdateSystem LayoutSystem Graphic Selectable Component Image & RawImage Text & Shadow & Outline Button Toggle Slider Scrollbar & ScrollRect Dropdown InputField 总览图 Base UIBehaviour BaseClass: MonoBehaviour **Interface: 无 ** I...
Unity 纹理压缩与相关优化知识汇总
一、纹理格式的基础知识1. 图片格式图片格式一般指我们从美术工具中导出的文件格式,用于在磁盘中存储的格式;如 jpg,png,tga 等; 2. 纹理格式文件格式是图像为了存储信息而使用的编码方式,但是他不能被 CPU 所识别,GPU 的特性是做向量运算;因此这些文件被游戏读入时还需要 CPU 解压成 R8G8B8 等像素格式,再传送到 GPU 端使用;而在运行时做解压无疑是非常耗的,所以一般在图片源文件导入时就会为其生成纹理格式的文件。 纹理格式是可以被 GPU 所识别的像素格式,可以被快速寻址采样。 但是直接使用这种纹理格式会导致资源的加载时间长、内存占用大的问题,尤其在移动平台上更加明显,因此,为了解决这个问题,就出现了压缩纹理格式; 3. 纹理压缩格式Unity 支持许多图片格式的源文件,但是 3D 图形的实时渲染中不会用这些格式,3D 图形硬件要求纹理以专门格式进行压缩,这些格式对快速纹理采样进行了优化,DXT,ETC 等压缩纹理格式可以在游戏运行中无需 CPU 解压就被 GPU 直接采样。每个不同的平台和设备都有自己的专有格式,因此在选择压缩方式时需要考虑兼容性。 U...
