Unity教程之-Hololens入门之使用Unity开发一个简单的应用

Hololens入门之使用Unity开发一个简单的应用

一、Hololens概述

Hololens有以下特性

1、空间映射
借助微软特殊定制的全息处理单元(HPU),HoloLens 实现了对周边环境的快速扫描和空间匹配。这保证了 HoloLens能够准确地在真实世界表面放置或展现全息图形内容,确保了核心的AR体验。

2、场景匹配
HoloLens 设备能存储并识别环境信息,恢复和保持不同场景中的全息图像对象。当你离开当前房间再回来时,会发现原有放置的全息图像均会在正确的位置出现。

3、自然交互
HoloLens 主要交互方式为凝视(Gaze)、语音(Voice Command)和手势(Gesture),这构成了 HoloLens的基本输入要素。同时传统的键盘鼠标等设备也被支持,自然的交互方式更贴近人类习惯,提高了交互效率。 More

Unity教程只-Unity3d获取某个方法执行的时间

 

我想在一帧内获取某个方法的总执行时间。开始想用Time.time减去之前保存的时间。但是发现在一帧内永远返回的是0,多帧的话可以,看来Time.time只会在每一帧赋值更新一次,所以一帧内的就取不到了。

然后查了一下c#有一个Stopwatch的类可以帮我们记录时间,使用起来也挺便利的。。 More

Unity教程之-UGUI一个优化效率小技巧

无意间发现了一个小技巧。如下图所示,可以发现UGUI的Image组件的RaycastTarget勾选以后会消耗一些效率,为了节省效率就不要勾选它了,不仅Image组件Text组件也有这样的问题。 More

Unity教程之-Unity3d与Android交互总结

 

在网上找了很多教程,基本上使用的方法都是在eclipse上新建普通android工程,让主activity继承UnityPlayerActivity,然后在该activity中写供unity调用的接口或者主动要回调unity的接口,然后导出jar包到unity。

这种方式只要人品不好就会出一堆乱七八糟的问题:

如新建工程时选择SDK版本小于4.0时在unity build APK时报错,因为style.xml就不会有parent=”Theme.AppCompat.Light,而是parent=”android:Theme.Light”; More

Unity教程之-基于物理着色(PBS)的材质系统

 

PBS(Physically Based Shading)在有一些地方也叫PBR(Physically Based Rendering),是一个基于物体表面材质属性的着色方法。与之前的Blinn-Phong等算法不同。PBS通过对物体表面的材质属性与周围光照信息来进行着色计算。PBS着色系统中,一个物体不仅受到光源的影响,还会受到周围环境的影响。 这会使得整个场景更加真实。

PBS有一个大前提,就是它能够满足光能传播过程中的能量守衡。能量守衡体现在三个方面。

1、一个对象反射出来的光照信息,不可能超过它接受到的信息。也就是说,全反射是一个物体的极限。

2、一个物体越光亮,那么它的颜色信息应该越少。(可以看出,refection 和 diffuse 应该是一个插值关系)

3、一个物体越平滑,那么它的高亮点会越小,越亮。 More

Unity教程之-Unity3d中Material与ShareMaterial引用的区别

 

我们在使用Unity引擎的时候,有时候需要去修改某个物体上的Material,在Unity的Renderer类里,提供了两个方法借口供我们使用。
Renderer.material和Renderer.sharedMaterial
那么这两货有什么区别呢!
Renderer.material

Returns the first instantiated Material assignedto the renderer.
Modifying material will change the material for this object only.
If the material is used by any other renderers, this will clone the shared material and start using it from now on. More

Unity教程之-Unity3d游戏中的画质与效率适配

 

众所周知,由于不同的设备配置不同。导致其CPU和GPU处理能力有高有低。同样的游戏想要在所有设备上运行流畅且画面精美,是不可能的。这就需要我们针对不同的设备能力进行画质调节,以保证游戏的流畅运行。

我们需要控制什么?

想要得到我们需要控制什么,只需要找出影响游戏运行效率的点即可。 当然在此不能一一列举出所有游戏类型的点。但笔者就个人经验,列出一些能用点。 More

Unity教程之-谈谈 UI 的那些事

 

UI, 差不多是玩家打开一个游戏最先看到的东西, 差不多也是玩家最不在意的东西. 对开发者来说, 几乎每个游戏模块都与 UI 有联系, 处理不当 UI 就是恶梦. 宽高比适应, 分辨率适应, 像素对齐…光是这些就足够没有经验的开发者浪费大量的时间了. 好在 Unity 这样的引擎提供了已经很强大的 UI 解决方案, 以及许多其他开发者提供的插件. 但是这还不够. 这篇文章主要谈一谈 UI 的逻辑设计而不是排版设计上的经验, 同时也在说明我的插件可以用来解决什么问题.

More

Unity教程之-Obj格式解析以及在Unity3d下导入测试

 

obj格式是waveFront推出的一种3D模型格式,可以存放静态模型以及一些诸如曲线的附加信息。

其格式以文本形式存放,所以解析起来比较方便,它的大体格式如下: More

Unity教程之-Unity3d中基于订阅者模式实现事件机制

我们知道通过在Unity3D中通过GetComponent就可以获得某个模块的实例,进而引用这个实例完成相关任务的调用。可是显然这种方法,就像我们随身带着现金去和不同的人进行交易,每次交易的时候都需要我们考虑现金的支入和支出问题,从安全性和耦合度两个方面进行考虑,这种方法在面对复杂的系统设计的时候,非常容易造成模块间的相互依赖,即会增加不同模块间的耦合度。为了解决这个问题,大家开始考虑单例模式,因为单例模式能够保证在全局内有一个唯一的实例,所以这种方式可以有效地降低模块间的直接引用。单例模式就像是我们在银行内办理了一个唯一的账户,这样我们在交易的时候只需要通过这个账户来进行控制资金的流向就可以了。单例模式确保了各个模块间的独立性,可是单例模式更多的是一种主动行为,即我们在需要的时候主动去调用这个模块,单例模式存在的问题是无法解决被调用方的反馈问题,除非被调用方主动地去调用调用方的模块实例。说到这里我们好像看到了一种新的模式,这就是我们下面要提到的事件机制。 More