自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

安宁技术博客

UE4 U3D VR

  • 博客(26)
  • 资源 (5)
  • 收藏
  • 关注

原创 关于角度的计算

Transform.TranformDirection(Vector3 dir); 将角度从局部坐标转换到全局坐标. dir被视为局部坐标的方向 例如: someObject.transform.TransforDirection(Vector3.right); 返回的是someObject的右方(一个方向)在世界坐标中的方向。Mathf.Tan()三角函数接受的参数是弧度制的,如果用的是角

2015-07-10 14:48:28 1306 1

原创 防止快速运动物体穿透

为了防止快速运动的物体穿透其他物体,最好的设置方法是:把快速运动物体的该属性设置为CountinuousDynamic,其他与该物体碰撞的物体设置为Countinuous,这个值对性能有很大的影响,所以对于那些不需要碰撞的物体,该值就设置为Discrete。Countinuous 碰撞检测只支持基础类型的碰撞体,(Sphere, Capusle,Box)

2015-07-10 13:48:11 3784

原创 Unity中捕捉环境贴图(cubemap)

找到RenderCubeMapWizard.js这个脚本(地址:https://code.google.com/p/games-development-project/source/browse/trunk/Assets/Editor/RenderCubemapWizard.js?r=2) 放到工程目录里,点击菜单里的GameObject>Render into Cube Map,在Project

2015-07-10 13:47:10 3145

原创 关于世界和局部坐标转换

Vector3.up指的是世界坐标中的”上方向”,即(0,1,0)transform.up指的是当前物体的”上方向” 在世界坐标中的表示transform.TransformDirection(Vector3 direction)作用是把当前局部坐标中的方向转换到世界坐标中的方向。这条容易混淆,下面举个例子:例如:输入参数direction为Vector3.up,则该参数会被当做当前局部坐标中的上方

2015-07-10 13:44:50 7687

原创 导入模型和贴图的最佳实践

看文之前,有言在先:这篇文不一定是所有情况下的最佳实践,只是我探索出的一种可行的流程。仅适用于文中所描述的情况。任何项目要想做的“顺手”,好修改,有条理,一定要整个团队都有很好的数据规范素养,有一套完善详尽的数据规范和流程,不是单纯靠一个什么“最佳实践”的流程能解决的。对美术人员来说,贴图命名规范、模型命名规范、模型结构规范、模型错误检查、模型比例匹配、历史记录清理、位置归零、文件存放路径等等都是很

2015-07-10 13:40:59 2803

原创 判断两个物体之间是否有气其他Collider阻挡

直接上代码public LayerMask LM;if(!Physics.Linecast(transform.position, Enemy.transform.position, LM)){ Debug.Log ("Path clear");}这个代码会检测从绑定该代码的物体到Enemy之间是否有Collider阻挡,其中LM限定了检测的Collider的图层。如果没有阻挡,会输出

2015-07-10 13:24:39 909

转载 Awake与Start函数的区别详解

非原创,觉得说的很透彻,故转载。 文章来源:http://blog.csdn.net/Haohan_Meng/article/details/21857029在Unity中编写脚本时,有一系列的可重写(override)函数供我们使用,其中的Awake与Start两个函数作为初始化与设置之用,几乎在每个脚本中都要用到。因此,正确的把握这两个函数的调用时机,就能让我们在程序开发过程中避免一些错误,提

2015-07-10 13:19:30 1815

原创 Unity双屏全屏方法

项目中遇到了需要双屏全屏的需求,向大神请教了,方法如下:Nvida显卡的情况下(没有A卡,也不太清楚怎么设置,应该也不麻烦):打开nvidia控制面板,打开”3D设置 > 配置Surround、PhysX”,勾选”使用Surround跨越多个显示器”。点击下方的”配置”,勾选两个显示器,拖动设置好两个显示器的显示顺序,确定。在生成的执行文件目录下创建一个bat文件,写入内容:demo.exe -po

2015-07-10 13:12:12 7644

原创 自定义全局标签

打开Edit>Project Settings>Player,每个平台下都有一个Scripting Define Symbols栏,可以再其中填入一些自定义标签,多个标签用分号分隔,如需注释掉某个标签,在前面添加斜线(/)即可在代码用使用#if xxx…… #endif即可根据是否定义了该标签相应的编译或者不编译if和endif之间的代码 注意这个过程是在编译阶段就实现了。 可以用来设置

2015-07-10 13:07:57 688

原创 Unity3D判断当前平台

官方文档:http://docs.unity3d.com/Manual/PlatformDependentCompilation.html文档上有详细说明,我在这里再补充两点:如果想判断多个条件,可以用 || 或 & 来组合例如:#if UNITY_IOS || UNITY_ANDROID...//这里的代码在IOS和Android平台都会编译#endif#if UNITY_ANDROID

2015-07-10 13:04:07 27353 2

原创 简单的单态写法

public static GameManager Instance{ get{return instance;} }private static GameManager instance = null;void Awake(){ //检查instance是否已经存在 //如果存在,就销毁掉自己 if(instance) {

2015-07-10 12:52:06 625

原创 检测物体是否可见

检测物体整体可见性(包括所有相机,包括Scene视图相机):Void OnBecameVisible()//当物体变的对任何相机可见Void OnBecameInvisible()//当物体对任何相机都不可见需要注意的是这两个函数把Scene View也计算在内了,也就是只要你在编辑器的Scene视图中能看到这个物体,就算是可见的检测物体对某个相机的可见性Void OnWillRenderObje

2015-07-10 12:44:45 1098 1

原创 正交相机中让物体以1:1的尺寸显示出来

正交相机的Size属性要是屏幕纵向分辨率的一半,这样即可实现把物体尺寸以1:1映射到屏幕上。准确说其实并不是1:1,而是是三维世界中一个单位在屏幕上以一个像素显示出来,例如创建一个默认的cube,在屏幕上只显示一个像素大小例如,游戏在1024*768的分辨率下运行,Size需要设置成364

2015-07-10 12:35:05 1000

原创 StartCoroutine和yield的工作流程

Yield 返回的是空值如果yield 返回的是空(C#中是 yield return null, js中是yield),coroutine会被终止,控制权交回调用的位置,就像coroutine结束了一样——事实上它还处于活动状态。 下一帧 coroutine会自动在yield的位置执行,直到Coroutine结束为止。举例:Ienumerator Test(){ Print(Time.t

2015-07-10 12:32:09 1780

原创 Mathf.PerlinNoise

这个函数会基于一个二维perlin noise图像(本质是算法,并不是真正的生成一张图片),用x和y作为uv坐标(取值范围都是0-1,超出这个范围的情况和uv坐标是一样的,perlin noise图像是可以无限延长放大的)在这个图像中取点,将这个点的灰度值作为函数结果返回。Perlin Noise的特点是:返回值随着x,y坐标的移动,是连续且平缓的变化的随机值,这点和Random是完全不同的,而且这

2015-07-10 12:18:25 4041

原创 Lerp 实现匀速运动

Mathf.Lerp的常见误用是Update(){ Transform.position = new Vector3(transform.position.x, targetPosition, Time.deltaTime);}首先它是这样工作的:每帧都重新获取物体当前的位置,计算物体和目标距离的差距,再按照当前帧的持续时间(当做一个百分比)来移动这个比例的位置。因此整体运动是缓动的,先

2015-07-10 12:14:26 15167 1

原创 Canvas

每个其他UI元素都必须处于一个Canvas的子级中。一个场景中可以存在多个Canvas。Render Mode– Screen Overlay画布总会铺满整个屏幕,总是渲染在所有元素的最上层,画布的RectTransform的大小由屏幕决定。Pixel Perfect选项会让UI边缘锐利。Render Mode—Camera在没有指认摄像机时候,和Sreen Overlay效果完全一样。

2015-07-10 12:08:42 761

原创 [UGUI] Rect Transform

两个概念:(Anchor和Pivot)Anchor锚点,四个小三角组成,作用是作为定位目标,它们的位置会跟着父级的变动而变动,其定位方式是按照父级的百分比。后面统一称呼为左上、右上、左下、右下四个锚点。Pivot轴心,用一个空心小圆圈表示,作为本身的缩放、旋转、定位的中心点/参考点,和三维物体的轴心概念一致。两种定位方式:固定的和拉伸的两种定位方式都是针对x和y某个轴向来说的,x和y轴向的定位方

2015-07-10 12:03:26 940

原创 Unity3D WebPlayer 铺满浏览器窗口

说明:不是fullScreen, 而是在浏览器中100%宽度100%高度终极解决办法 修改发布后的html页面:修改jsvar config = {width:960,height:600,修改成:var config = {width:windows.innerWidth,height:windows.innerHeight修改css 在body块内添加:margin:0px;p

2015-07-09 23:14:36 839

原创 [UGUI] 用脚本给UI绑定事件2

还有一种更简单的绑定事件的方法——通过一些接口来实现。这些接口定义在UnityEngine.EventSystems中,可以在这里查阅:http://docs.unity3d.com/ScriptReference/EventSystems.IBeginDragHandler.html 展开左侧的Interfaces即可看到。扩展了这些接口,即可通过实现接口中定义的方法来实接收各种事件。判断左右键

2015-07-09 23:10:20 1706

原创 [UGUI] 用脚本给UI绑定事件(对比手动绑定)

注:此文内容所使用Unity版本为5.1.1f1,在较早的版本中,代码可能略有不同,最后一行代码trigger.triggers.Add(…) 可能为 trigger.delegates.Add(…)一直觉得用脚本给UGUI绑定事件过程很繁琐,不易记。最近发现如果对比着手动绑定事件的过程,是非常容易记住的,因为两者的过程几乎是一致的,下面对比一下:一、先来看看手动绑定的过程:

2015-07-09 23:07:38 3118

原创 UnityAction和UnityEvent的用法详解

UnityAction本质上是delegate,且有数个泛型版本(参数最多是4个),一个UnityAction可以添加多个函数(多播委托)UnityEvent本质上是继承自UnityEventBase的类,它的AddListener()方法能够注册UnityAction,RemoveListener能够取消注册UnityAction,还有Invoke()方法能够一次性调用所有注册了的UnityAc

2015-07-09 22:50:06 64686 5

原创 [UGUI]UGUI深度管理

UGUI的深度管理非常简单直观,规则如下:如果同时存在多个Canvas,Sort Order值大的显示在前同一个Canvas中,多个同级子元素,按照在Hirerachy中的上下顺序,靠下方的显示在上方。中的规则按照父级优先的原则适用于多重复杂层级关系。运行时改变层级用到Transform的几个方法,都很简单直观,看名字也能猜出来是什么用法:GetSiblingIndex() 获取物体在同级

2015-07-09 22:11:19 3765 1

原创 [UGUI]UGUI使用图片文字(Custom Font)

如果你需要为NGUI导出素材,建议从开头开始看,如果是为UGUI导出字体素材,可以直接跳到第7步。先清理一遍Character。 方法: Edit>Clear all chars in font在BMFont中逐个导入贴图(在此以数字0~9为例):Edit>Open Image Manager. 点击Image>Import Image。不能批量导入,也不能批量编辑,虽然是免费的,但这软件做的也

2015-07-09 22:08:39 4810

原创 [UGUI]深入理解Canvas Scaler

Canvas Scaler:这是一个理解起来相当繁琐复杂的一个组件,但又是一个至关重要的组件,不彻底了解它,可以说对UGUI的布局和所谓的“自适应”就没有一个完整的认识。Canvas Scale指的是UI Canvas整体的缩放比例,这个值在Canvas 的Render Mode为 Screen Space – Overlay 的情况下默认为1

2015-07-09 22:06:45 8026

原创 Unity中触摸和鼠标操作的几个问题

关键点1:在unity中touch事件同时也会触发GetMouseButton事件,有时候可能会给你带来方便,但是如果没有意识到这个问题的话,也很可能给你带来很大的麻烦。关键点2:触摸操作也可以使用Input.GetAxis(“Mouse X”)(或”Mouse Y”,下同,略去不写)来判断指尖移动的距离,虽然这点很方便,但是这样就带来了另外两个问题,见关键点3和4;

2015-07-09 21:57:36 10985 2

C#字符串和正则表达式参考手册

C#字符串和正则表达式参考手册,重点写的是标题所描述内容,很详细,不错的教程

2015-07-11

费曼物理学讲义第三部分

费曼物理学讲义第三部分 费曼物理学讲义第三部分 费曼物理学讲义第三部分

2012-01-03

费曼物理学讲义]._2

费曼物理学讲义第二部分 费曼物理学讲义第二部分 费曼物理学讲义第二部分

2012-01-03

费曼物理学讲义]._1

费曼物理学讲义第一部分 费曼物理学讲义第一部分 费曼物理学讲义第一部分

2012-01-03

Objective-C基础教程

Objective-C基础教程 中文版,很不错的中文ios教程

2011-12-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除