随笔分类 - Unity
摘要:一、 首先你得先清楚RectTransform组件的一些程序控制 1. 先得到UGUI控件上面的RectTransform组件 2. 设置top和bottom值 3. 设置width,height 4. 设置pos 二、动态生成Button实例 1. 目标是要生成这样一个Button,这是手工设置的
阅读全文
摘要:在游戏开发中,会常用到场景间传递数据的方法(比如关卡选择,过关后自动回到关卡选择界面,以动画方式解锁下一关),目前研究了三种: 1. 使用DontDestroyOnLoad方法: (1)在场景A中做个GameObject,身上挂个脚本,在Start方法中写明 这个表示在场景跳转后,不需要Destor
阅读全文
摘要:注意EventSystem.current.IsPointerOverGameObject是指点击的物体是否是一个能响应EventSystem的物体(也就是UGUI控件)
阅读全文
摘要:Unity中默认提供了一个Character Controller的组件用于实现角色控制,一个3D的游戏物体,可以直接添加。Character Controller会自动模拟出Capsule Collider,它的主要配置如下: Slope Limit:坡度限制,默认为度,限制物体只能上这个范围内的
阅读全文
摘要:抽空研究了下Easy Touch 5插件,发现确实很好用,下面是相应的用法: 1. Easy Touch Controls:实现虚拟摇杆的组件 在项目的"Hierarchy"窗口下,创建摇杆操作点击GameObject=>EasyTouchControls=>Joystick,创建完之后会在Hier
阅读全文
摘要:看了下塔防游戏的教程,比我想像的还简单一些,有些收获: (1)敌人的移动路径,其时比较简单,用了N个Empty GameObject作为路径点,然后做一个总的Empty GameObject 作为父级点,定义一个transform数组,数组的长度可以使用transform.childCount来确定
阅读全文
摘要:1. DrawCall是啥?其实就是对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西。所以,是谁去调用这些接口呢?CPU。比如有上千个物体,每一个的渲染都需要去调用一次底层接口,而每一次的调用CPU都需要做很多工作,那么CPU必然不堪重负。但是对于GPU来说,图形处理的工作量
阅读全文
摘要:1.对象池Object Pool的原理: 有些GameObject是在游戏中需要频繁生成并销毁的(比如射击游戏中的子弹),以前的常规做法是:Instantiate不断生成预设件Prefab,然后采用碰撞销毁,或者定时销毁,大量创建重复对象造成内存损耗,影响性能还容易产生内存碎片。 所谓对象池,就是针
阅读全文
摘要:没想到Unity的音频会成为内存杀手,在实际的商业项目中,音频的优化必不可少。 1. Unity支持许多不同的音频格式,但最终它将它们全部转换为首选格式。音频压缩格式有PCM、ADPCM、Vorbis,不是所有平台都支持这些所有的压缩格式,有些平台,例如WebGL只支持AAC格式。 2.所有音频导入
阅读全文
摘要:1. Occlusion Culling-遮挡剔除的含义:没有在Camear视野范围内的游戏物体不进行渲染Render(默认情况下,Unity是会渲染所有GameObject,无论Camear是否看得见),例如下图: 2. 使用比较简单,效果也是立竿见影 (1)配置下游戏物体: (2)“window
阅读全文
摘要:在游戏中,经常可以看到从一个关卡跳到另一个关卡时,有一个显眼的进度条,研究了下,其时也很简单: public void LoadAScene() { StartCoroutine(LoadSceneAsync("SampleScene")); } IEnumerator LoadSceneAsync
阅读全文
摘要:1. 协程不是多线程,见官方图,它发生在LateUpdate()之后的 2. 定义协程的方法,写个方法,它必须返回IEnumerator 接口,可带参数,也可以不带参数; 3. 启动协程StartCoroutine方法, StartCoroutine("方法名")或StartCoroutine("方
阅读全文
摘要:【Unity3D的四种坐标系】 1、World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。 2、Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(
阅读全文
摘要:http://www.bubuko.com/infodetail-968864.html
阅读全文
摘要:http://blog.csdn.net/huang9012/article/details/38492937总结:1.协程相当于多线程但不是,(尽管它们看上去是这样的),它们运行在同一线程中,跟普通的脚本一样 2.协程的方法必须返回值是IEnumerator 3.协程中经常使用yiel...
阅读全文
摘要:这里写得非常好了:http://blog.gamerisker.com/archives/347.html
阅读全文
摘要:Vector3 pos=Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);类似的鼠标点击Camera.main.ScreenToWorldPoint(Input.mousePosition)
阅读全文
摘要:1.生成的prefab如果要产生反向: Instantiate(Rocket, rocketPosition.position, Quaternion.Euler(new Vector3(0,0,180f)))2.Input.GetAxis("Horizontal")的使用,返回-1~+1之间的数...
阅读全文
摘要:http://www.cnblogs.com/88999660/articles/2893126.html
阅读全文
摘要:Awake()当一个脚本实例被载入时Awake被调用。Awake用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如 GameObject.FindWithTag 这样的函数搜索它们。每个游戏物体上的...
阅读全文