编辑器扩展-分割条

可拖动分割条在 Unity3D 的编辑器结构中一般都属于最外层结构,因为它是基于 GUI 组件,计算位置的时候必须要很精确,所以跟Layout 流式布局混编会比较乱。这里也推荐作为最外层结构使用。

可拖动的分割条

阅读全文

UNITY性能优化参考篇

下面是我给项目组的一些参考。其中也包含各种各样的标准,与优化建议。项目优化并不是一件事,它是点点滴滴串联起来的(勿以恶小而为之),我见过很多项目只是图一时之方便就导致后期很难做 比如 前期未规划好图集,模型贴图材质目录混用,UI制作未按照 复用/特殊 的标准制作,动画导出帧率不统一高高低低 等等。如果一开始没有定制良好的规范,后面想要补救只能靠程序写一些工具批量处理,当然这工具也不一定好写。

阅读全文

Unity new API

这里记录一些Unity3D的API 以备不时之需。

阅读全文

SNFramework

起源

2015年 我在淘米写了一套 消息传递机制 当然这一套在我的上家公司也得到验证。
2016年 我在世纪创意基于2015年一版的消息传递进行了封装但是当时赶项目也没有引入。我称之为 SmartNotificationFramework 我希望它能达到足够的灵活,在我看来它工作的还不错,但是太简陋。
2018年 也就是今年我终于得空并且集中时间大量重构与完成了大部分的单元测试。SNFramework 是我正在使用的消息传递机制。它已经有了初步的理想功能,如消息上下分隔离,消息被阅读成功自动释放(即指执行一次),广播消息等。

阅读全文

分析缺氧(Oxygen not included)中所用到的技术

元旦期间玩了缺氧,感觉十分的好玩。属于深度沙盒经营类游戏。既然好玩那就要知其所以然,今天抽空看了看源码,基本上列出所有能找到的工具或技术。算是一个记录,也开阔一下视野。如果你还有什么补充欢迎给我留言。

阅读全文

动态获取AgentTypeID

前阵子我在Github上给Unity团队提了一个issue关于使用代码获取agentTypeID,说来惭愧是我自己的没找到对应的代码。在我使用另外渠道获取此ID的时候 Unity团队已经默默给我回复了这个issues.先说说我的解决方式,由于代码设置 agentTypeID 的时候需要给一个Int类型变量,这个变量其实是对应了一个枚举,我在UnityEditor Inspector的Debug窗口中直接获取了对应AgentTypeID. 笑. 本文记录我获得答复的过程,换个角度想想其实也能发现另外的解决方案即使不知道也没关系

解决方案

阅读全文

三维向量曲线平滑算法

在网上看到一个平滑算法,很好用,经过我测试 效率很高,Chaikin 函数调用2-3次会获得一个相对较好的曲线。算法链接
原理是不断的裁切三角形让其分裂成2个三角,2个三角变成4个,以此类推,最终会越来越平滑从而接近一个圆。

裁切范例

阅读全文

使用物理检测范围与距离内的目标

分享一个技围检测脚本,用来判定范围内是否有目标,或者是线性范围内是否可见目标。

简洁范围检测

阅读全文

解决NavmeshAgent寻路边界的判定

今天群里有兄弟问: “我看到navmeshagent里面有个方法叫什么获取网格边缘点的,我打算首先判断目标点在不在网格上。在的话正常逻辑,不在的话判断当前agent的位置有没有到那个边缘点 “ 。我想这样应该能解决这个问题。

解决边界点的判定

阅读全文

High-level NavMesh Building Components

高级 NavMesh 组件说明文档

NavMesh Surface 脚本 ,在此之前 我看了网络上的一篇介绍 进击的新版NavMesh系统:看我飞檐走壁 效果非常好。我一边测试一边记录关于Surface的用法。

NavMesh Surcefa组件表示特定NavMeshAgent类型的可行走区域,并定义应该构建NavMesh的场景的一部分。

NavMesh Surface组件不在标准Unity安装中; 有关如何访问它的信息,请参阅高级NavMesh构建组件的文档

要使用NavMesh Surface组件,导航到GameObject> AI> NavMesh Surface。 这将创建一个空的GameObject,并附带一个NavMesh Surface组件。 一个场景可以包含多个NavMesh表面。

阅读全文

Building a NavMesh

创建导航网格与Unity2017面板详细参数说明。

阅读全文

Navigation System In Unity

时间仓促,大部分采用google机器翻译来不及全部校对翻译成中文资料 本篇作为笔记。感兴趣的可以看下。这篇是记录Unity3D寻路的官方文档阅读体验。

The Navigation System allows you to create characters which can navigate the game world. It gives your characters the ability to understand that they need to take stairs to reach second floor, or to jump to get over a ditch. The Unity NavMesh system consists of the following pieces:

Unity3d的寻路系统大概有下面几个部分:

NavMesh(导航网格的缩写)是描述游戏世界的步行表面的数据结构,并且允许从游戏世界中的一个步行位置到另一个步行路径找到路径。 数据结构是烘焙的网格里获取的。

NavMesh (short for Navigation Mesh) is a data structure which describes the walkable surfaces of the game world and allows to find path from one walkable location to another in the game world. The data structure is built, or baked, automatically from your level geometry.

NavMesh Agent组件帮助您创建角色,在向目标移动时避开彼此。Agent使用NavMesh理解游戏世界,他们知道如何避免彼此以及移动障碍物。
离网链接组件允许您合并无法使用可走行的曲面表示的导航快捷方式。 例如,跳过沟渠或栅栏,或者在走过它之前打开门,都可以被描述为“Off-mesh”链接。

NavMesh Agent component help you to create characters which avoid each other while moving towards their goal. Agents reason about the game world using the NavMesh and they know how to avoid each other as well as moving obstacles.
Off-Mesh Link component allows you to incorporate navigation shortcuts which cannot be represented using a walkable surface. For example, jumping over a ditch or a fence, or opening a door before walking through it, can be all described as Off-mesh links.

NavMesh障碍组件允许您描述Agent在航行世界时应避免的移动障碍。 物理系统控制的一个桶或一个箱子是一个障碍的好例子。 当障碍物移动时,障碍物尽力避开它,但是一旦障碍物变得静止,它将在导航网上挖一个洞,使得障碍物可以改变它们的路径来绕过障碍物,或者如果障碍物妨碍路径 方式,Agent可以找到不同的路线。

NavMesh Obstacle component allows you to describe moving obstacles the agents should avoid while navigating the world. A barrel or a crate controlled by the physics system is a good example of an obstacle. While the obstacle is moving the agents do their best to avoid it, but once the obstacle becomes stationary it will carve a hole in the navmesh so that the agents can change their paths to steer around it, or if the stationary obstacle is blocking the path way, the agents can find a different route.

阅读全文

Unity3D 自动化测试

今天凌晨开始写这篇文章,想写这个主题很久了。相信每个资深开发都经历过每次公司要发版本之前都会有一堆bug闪现。真让人苦恼。很高兴 Unity technology 于 今年的六一儿童节更新了自动化测试的特性。这下终于不用再导入第三方自动化测试插件了。当然本章节会相对完整的快速概述其重要部分。如果你还想知道更多, Unity3D 已经提供了比较完善的文档

阅读全文

Git FAQ

今天有朋友问了我三个问题:

  • 策划或者美术可能没有commit前先pull的习惯,先commit上去,然后push不上。Git提醒pull,然后报错,一般除了程序,甚至没使用过Git的程序就有点不知所措了。应该要讲下出错时候要stash的问题。
  • 策划pull出错时候, 万一revert,然后push强推,把之前别人提交的东西冲掉了。我们有用过回滚,然后强推上去。可以再讲下怎么强推
  • 怎么stash,怎么stash apply,apply失败后怎么弄。commit的顺序最好也要重点强调下

在篇中我会解答,如果还有其他问题 请给我留言,我会追加叙述。求关注 求转发。把爱传出去 笑~

阅读全文

Rounded Cube 5

接上回 Rounded Cube 4.本章主题如下:

  • Combine primitive colliders. 合并原始网格

此为本人阅读笔记不作为转载处理,详细还请参看原文. 原文地址

阅读全文