本篇文章,是由3D环境设计师为大家分享他利用Unity 5还原真实场景照片的过程,这也是Jeryce的一大爱好,下面是他利用Unity 5的光照特效复原照片的方法。从网站上选定了参考图,然后在Unity 5中还原了2D图中的3D场景,并将光照特效尽量复原,效果如下图:设计师还大量参考了游戏《Tom ...
随着VR玩家团队的不断壮大,广大开发者越来越重视在VR中的互联和社交。今天我们就来讨论一下如何创建一个基于Unity的多人连线VR游戏的基础构架。本文中使用Unity版本为Pro 5.5.1, 硬件以Oculus Rift CV1举例,其他的PC端VR设备也可以以此类推。关键点一:玩家互联在Unit...
现在分享一些UE4引擎优化相关的知识。 氛围设定​为了匹配公司的硬件,我们的场景设计成了双人面对面的模式。左右下角的两列功能也说明了游戏中有丰富的互动和对应的资源表现,所以优化之前GTX980显卡VR模式下游戏帧率只有20多帧,卡顿非常严重。经过跟程序商讨,查阅了一些优化相关资料后,进行了以下一些操...
本文我们将介绍类型信息的收集阶段C++ Static 自动注册模式另一种常用的C++常用的设计模式:Static Auto Register。典型的,当你想要在程序启动后往一个容器里注册一些对象,或者簿记一些信息的时候,一种直接的方式是在程序启动后手动的一个个调用注册函数:#include "Cla...
插件导入和图集制作在Unity开发中都是一些经常会用到的功能,为了方便大家开发,下面就给大家介绍下在NGUI中插件导入和图集制作的教程,一起来看看吧。虽然 Unity 4.6 Beta 已经出来了,网络上也已经有不少新版 uGUI 及 NGUI 的系列教学,但因为还是会有人问到 NGUI 的相关问题...
投影式纹理映射(Projective texturing) 常用于在低端平台实现实时阴影效果,或实现一些类似幻灯片投射的效果。从其名字就可以看出,这种技术与普通的网格渲染流程是有关系的:​ 常规的网格渲染流程如左图,首先将网格从物体本地坐标转换到世界坐标,然后通过反转的摄像机世界坐标变换矩阵将其转换...
当你尝试VR的时候,第一件事就是尝试一下“投掷”。拿起虚拟的咖啡杯,把它吸上来。然后它扔出去,杯子(或者甜甜圈、球)开始在空中疯狂打转,飞向盆栽。入门的教程都会讲到。为何VR中的投掷效果差?上图中我在向对面的白板投掷易拉罐你的一些投掷飞的太远,又有一些飞的太低。总有那么一两个砸在被困扰的NPC上。也...
层次化标记可以成为整理概念和数据的非常实用的方法,游戏性标记系统是 UE4 用于声明和查询层次化标记的方法。引擎中的游戏性标记已经存在于多个版本中,但是在 UE 4.15 中,它的界面和性能得到了很大改进,因此现在就是开始使用游戏性标记标记和整理内容的好时机。但是,什么是游戏性标记呢?为什么需要使用...
背景      我们都知道,最初是作为3d游戏引擎而设计的,在4.3版本后才推出的UGUI和Sprite来实现2d游戏设计。在UGUI中使用的屏幕坐标系(以像素单位),但是在中依然使用的是3d坐标系中的(Unit浮点单位),在导入Texture2d时可以做像素到单位(unit)的转换设置。而世界坐标...
在使用引擎开发产品时,我们经常会使用环境光作为游戏场景的太阳光使用,环境光照是我们加入场景总体光照中的一个固定光照常量,它被用来模拟光的散射(Scattering)。在现实中,光线会以任意方向散射,它的强度是会一直改变的,所以间接被照到的那部分场景也应该有变化的强度,而不是一成不变的环境光。其中一种...
实时阴影技术的实现,不论在PC端还是在移动端,都显的非常重要,它也是衡量一个3D引擎渲染能力的一个指标,很多开发者或者是引擎开发者对于如何实现实时阴影的原理并不是很清楚,大部分人使用引擎都是在前人做好的基础上去调用接口,对于它的内部实现一无所知,在面试引擎的工作时就被暴露出来了。作为开发者要知其然知...
3.1组件 Component组件是Unity中最核心的一个概念,它是一切编程的基础。没有组件,也就没有了Unity编程。打开一个新Unity工程,我们在Project面板中右键可以直接创建出一个C#脚本。脚本的内容如下:using UnityEngine;using System.Collecti...
UE4的版本迭代Unreal Engine 在确保Editor以及cooked内容可以在多个不同的引擎版本之间通用这一块有很不错的表现。而且为了让程序员能够在这些不同的版本之间很方便的更改数据结构,Unreal Engine也提供了一些机制。这篇博客将通过GetLinkerUE4Version()及...
HTC Vive 是由HTC与Valve联合开发的一款VR头显(虚拟现实头戴式显示器)产品,想必大家都玩到很多VIVE上的VR游戏了,那么如何使用Unity来进行VIVE上的VR游戏开发呢?第一步: 导入SDK:SteamVR Plugin和Vive Input Utility第二步: 删除场景中的...
最近在做项目的优化工作,测试发现UI的开销占到了一半以上,所以先从他下手。 源码分析 NGUI有几个重要的类,UIPanel,UIWidget,UIDrawCall。其中UIPanel用一个静态链表保存游戏里的所有UIPanel,每个UIPanel在列表里的顺序是由depth决定的,注意这里是静...
引言在服务器中,数据库是必不可少的部分,作为数据存取中心,有时候的系统的操作涉及到数据的快速读写,在这种情况下,我们通常不会中规中矩地直接读写像MySQL的持久性数据库的数据,因为像MySQL这一类关系型的数据库不管是查询或者是修改数据库的内容都需要通过冗长的检索过程,势必影响效率,所以我们通常会选...
前言 在我们进行游戏战斗场景开发时,常常为了加强临场感,会在有爆炸或者撞击的时候加入震屏的效果,原理其实很简单,就是对场景主相机进行坐标和角度的变化。设计 在开始进行代码实操之前,我们先考虑一下大致的思路,主要操作的参数有震动的幅度(Transform的各项参数,通常只改变localPosi...
Unity编程标准导引-3.4 Unity中的对象池  本节通过一个简单的射击子弹的示例来介绍Transform的用法。子弹射击本身很容易制作,只要制作一个子弹Prefab,再做一个发生器,使用发生器控制按频率产生子弹,即克隆子弹Prefab,然后为每个子弹写上运动逻辑就可以了。这本该是很简单的事情...
在不同的Unity版本上,发现了泛型List无论使用foreach还是GetEnumerator均会产生GC的情况,这就有点尴尬了。由于它本身就是Mono编译器和相应.net库才能决定的原因,这就使得在使用系统提供的List时,又能最终摆脱GC的纠缠变得很困难。于是抓耳挠腮,翻出差不多六七年为Jav...
关于这个话题,网络上讨论的很多,我也收集了一些资料,都不是很齐全,所以自己亲自测试,这里把结果分享给大家。锚点foreach究竟怎么了?研究过这个问题的人都应该知道,就是它会引起频繁的GC Alloc。也就是说,使用它之后,尤其在Update方法中频繁调用时,会快速产生小块垃圾内存,造成垃圾回收操作...