
Unity游戏开发
石圣
移动游戏开发从业者,同时对Android开发有一定的研究。
展开
-
[Unity-1] Unity简介
Unity是一套包括图形、声音、物理等功能的游戏引擎,提供了一个强大的关卡编辑器,支持大部分主流3D软件格式,使用C#或者JavaScript等高级语言实现脚本功能,使开发者无需了解底层复杂技术,快速的开发出具有高性能、高品质的游戏产品。Unity是跨平台的3D游戏引擎,支持的平台包括PC、Mac、Linux、Web、IOS、Android、Xbox360、PlayStation3等大部分尿潴原创 2014-07-29 17:17:27 · 1411 阅读 · 0 评论 -
[Unity-18] Unity摄像机Clear Flags和Culling Mask属性详解
1.简述两个属性1.1 Clear Flags 清除标记 每个相机在渲染时会存储颜色和深度信息。屏幕的未绘制部分是空的,默认情况下会显示天空盒。当你使用多个相机时,每一个都将自己的颜色和深度信息存储在缓冲区中,还将积累大量的每个相机的渲染数据。当场景中的任何特定相机进行渲染时,你可以设定清除标记以清除缓冲区信息的不同集合。可以通过下面四个选项之一来完成:1.Skyb转载 2014-11-26 16:25:02 · 2281 阅读 · 0 评论 -
[Unity-20] Unity不同脚本之间的执行顺序
我们都知道,Unity中某个脚本的执行顺序是Awake、Start、Update、LateUpdate等,但是不同的脚本之间的执行顺序是怎样的呢?例如我有两个脚本Script1和Script2,那么这两个脚本的Awake执行顺序是怎样的呢?要知道真相我们就必须了解Unity后台的运行原理,其实Unity后台是单线程执行的,所谓的协程都是伪多线程。不同脚本的Awake在后台的执行真相是这样的原创 2014-11-28 18:13:15 · 9294 阅读 · 0 评论 -
[Unity-19] Unity中全局变量的赋值过程
使用Unity开发的朋友可能会遇到这样一个问题,那就是我在脚本中定义了一个公共全局变量并且赋值,但是运行后发现这个变量并不是这个值,这里就给大家解释一下原因。代码如下:public class Test : MonoBehaviour { public int a = 10; void Awake() { a = 20; } voi原创 2014-11-27 18:44:10 · 14993 阅读 · 1 评论 -
[unity-15] Unity性能优化三
听到过很多用Unity 3D开发游戏的程序员抱怨引擎效率太低,资源占用太高,包括我自己在以往项目的开发中也头疼过。最近终于有了空闲,可以仔细的研究一下该如何优化Unity 3D下的游戏性能。其实国外有不少有关U3D优化的资料,Unity官方的文档中也有简略的章节涉及这方面的内容,不过大多都是以优化美术资源为主,比如贴图的尺寸,模型静态及动态的batch以减少draw call,用lightmap替转载 2014-11-03 13:26:32 · 1164 阅读 · 0 评论 -
[unity-16] Character Controller的Move和SimpleMove的区别
下面是官方解释以及其翻译大意:CollisionFlags Move(Vector3 motion);DescriptionA more complex move function taking absolute movement deltas.Attempts to move the controller by motion,原创 2014-11-23 22:16:28 · 12908 阅读 · 0 评论 -
[Unity-22] Coroutine协程浅析
1.概念解释 协程并不是一个独立的线程,在Unity中,所有的语句都是在一个线程中执行的,也就是说,Unity是单线程的(具体的可以参见http://blog.youkuaiyun.com/alexander_xfl/article/details/41577625,这里面有对单线程的粗略讲解)。 那么协程到底是什么呢? 官方的定义是这样的: A coroutin原创 2015-03-19 11:22:03 · 1445 阅读 · 0 评论 -
[Unity-21] Prefab详解
1.什么是Prefab? Prefab又被称为预设,下面部分来自官网:预置是一种资源类型——存储在项目视图中的一种可重复使用的游戏对象。预置可以多次放入到多个场景中。当你添加一个预置到场景中,就创建了它的一个实例。所有的预置实例链接到原始预置,基本上是它的克隆。不管你的项目存在多少实例,当你对预置进行任何更改,你将看到这些更改将应用于所有实例。当预置源发生变化,这些变化将应用于所有已原创 2015-03-16 17:23:17 · 13656 阅读 · 0 评论 -
[Unity-23] Unity中的特殊文件夹
1.EditorEditor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以。比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor的文件夹都可以。Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用。一般呢会把一些工具类的脚本放在这里,或者是一些编辑时用的DLL。 比如我们现在要做类似转载 2015-04-21 16:55:16 · 962 阅读 · 0 评论 -
[Unity-24] Unity的四种加载场景的方法
Unity官方提供了4中加载场景(scene)的方法,分别是: 1. Application.LoadLevel():同步加载 2. Application.LoadLevelAsync():异步加载 3. Application.LoadLevelAddictive():同步附加式加载 4. Application.LoadLevelAddictiveAsync():异步附加式加载原创 2015-06-28 21:33:40 · 37674 阅读 · 0 评论 -
[Unity-25] Unity中让游戏对象消失或隐藏的几种方法
本文在其他博主博客的基础上修改而来。GameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的 GameObject.Destroy() //表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放,而是等到这一帧的结束才会真正销毁GameObject.转载 2015-07-05 13:32:40 · 21907 阅读 · 0 评论 -
[Unity-26] AnimationClip压缩-动画文件压缩
动画压缩方法一、常用方法1. Rig->Animation Type:改为Generic2. Animations->Anim.Compression:Optimal二、高级方法1. 去掉AnimationClip中的无效曲线:例如ScaleCurveusing UnityEngine;using UnityEditor;using System.Collections.Generic;publ原创 2017-03-27 20:00:32 · 8104 阅读 · 2 评论 -
[Unity-27] Unity3D Editor中加载移动平台的AssetBundle资源导致Shader显示出错的解决方法
本文转自:https://7dot9.com/2016/03/17/unity3d-editor-load-assetbundle-miss-shader-fixed-up/原作者写的太精彩,实事求是的态度加上精准的分析思路,赞!在 Unity3D 项目开发的过程中,我们肯定会遇到需要使用 AssetBundle 的时候,而且这货还确实应用之处满多的,今天咱们不#展开聊 AssetBundle...转载 2019-08-16 15:56:40 · 2703 阅读 · 1 评论 -
[unity-17] Unity如何在UI层显示3D模型
1、创建一个3D摄像机,渲染3D模型。(我为了方便就把模型放到了Camera的下面,你可以不这样)2、在2D里面指定一个TopLeft和BottomRight,用来表示模型渲染到UI上面的区域。3、在之前的3D摄像机上挂上UIViewPort脚本,几个变量如图所示。4、结果就是这样。需要注意的地方:1、3D摄像机的depth要转载 2014-11-26 16:21:59 · 6714 阅读 · 2 评论 -
[Unity-14] Unity3d中使用摄像机制作实时显示小地图
Unity3d中使用摄像机制作实时显示小地图,以之前的tank为例。开始制作之前场景中物体如图。开始制作,步骤1:新建一个camera及一个plane。对齐位置,将camera改名为camera_UI。旋转plane,使之在camera_UI中显示为竖直状态。效果如下图:其中,camera_UI及plane设置如图。position位置,在tank前方并在视野范围内转载 2014-10-31 13:37:03 · 5709 阅读 · 0 评论 -
[Unity-2] Unity播放音乐
Unity里面大部分的功能都可以通过拖拽来实现,但是为了方便介绍,在这里都通过代码来实现。 Unity里面要播放音乐主要有以下3个要素: 1.AudioSource:控制音乐播放的主体 2.AudioClip:需要播放的音乐3.AudioListener:添加这个控件才能够听到音乐播放的效果 代码如下:AudioSource m_audioSo原创 2014-07-29 17:33:24 · 2610 阅读 · 0 评论 -
[Unity-4] 碰撞检测
一、基本介绍要进行碰撞检测有两个必须的组件,刚体(Rigidbody)和碰撞器(Collider)。1、刚体是一个非常重要的组件。新创建的物体默认情况下是不具备物理效果的,而刚体组件可以给物体添加一些常见的物理属性,例如质量、力、速度等,这些属性可以使得该物体表现出实际中物体的一切行为。2、碰撞器分为盒子碰撞器(Box Collider)、球体碰撞器(Sphere Collider)、原创 2014-08-03 15:35:17 · 2410 阅读 · 0 评论 -
[Unity-9] Unity性能优化二
1、在使用数组或ArrayList对象时应当注意[csharp] view plaincopylength=myArray.Length; for(int i=0;i { } 避免[csharp] view plaincopyfor(int i=0转载 2014-08-19 10:23:52 · 831 阅读 · 0 评论 -
[Unity-5] Unity中的四种坐标系以及转换方式
1, World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。2, Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。注:鼠转载 2014-08-08 11:16:09 · 5236 阅读 · 1 评论 -
[Unity-10] Unity脚本的生命周期
做过Android开发的朋友应该都知道,Android每一个Activity都有一套完整的生命周期,Unity的脚本也有着类似的生命周期,下面就一起来看一下。1、Awake():脚本唤醒。这个方法是脚本生成时执行的第一个方法,用来初始化脚本。脚本的整个生命周期中只执行一次。2、Start():脚本开始。这个方法是在Awake()之后执行,也只执行一次。3、Update():脚本更新。这原创 2014-08-21 14:53:52 · 1382 阅读 · 0 评论 -
[Unity-11] Unity截屏方法
下面是我总结的、在u3d中的,三种截屏方法:1、使用Application类下的CaptureScreenshot方法。[csharp] view plaincopyvoid CaptureScreen() { Application.CaptureScreenshot("Screenshot.png", 0);转载 2014-08-21 15:26:22 · 1223 阅读 · 0 评论 -
[Unity-6] GameObject有时候渲染不出来
问题描述:在做游戏的过程中遇到了这样一个问题,一个怪物,如果让他出现在屏幕的中央是没问题的,但是让他出现在屏幕的边缘的位置发现他没有出现。问题原因:经过检查发现,我给这个GameObject添加了一个Animator控件,然后Animator的Culling Mode设置为了Based on renderers,将其改为Always Animate则可以解决上述问题。PS:主要原创 2014-08-16 17:51:59 · 3014 阅读 · 0 评论 -
[Unity-7] Update和FixedUpdate
1.Update和FixedUpdate是Unity里面提供的两个与帧相关的函数接口。Update():这个函数里面的内容每一帧都会被执行一次,这个函数有一个特点,那就是执行的频率等于帧率。而这个帧率取决于手机的性能,手机性能越高帧率越高,也就是说如果你在Update里面写着向前移动1,那么在高性能手机(假设帧率为100)上,每秒会向前移动100;而在低性能手机(假设帧率为50)上,每原创 2014-08-16 18:08:17 · 2881 阅读 · 0 评论 -
[Unity-3] iTween动画插件
1.官方介绍2.easetype路径曲线示意动画转载 2014-07-30 20:19:41 · 875 阅读 · 0 评论 -
[Unity-8] Unity性能优化一
流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏《Shadow Blade》已经将在标准iPhone和iPad设备上实现每秒60帧视为一个重要目标。以下是我们在紧凑的优化过程中提升游戏运行性能,并实现目标帧率时需要考虑的事项。当基本游戏功能到位时,就要确保游戏运行表现能够达标。我们衡量游戏运行表现的一个基本工具是Unity内置分析器以及Xcode分析工具。使用Unity分转载 2014-08-19 10:20:12 · 931 阅读 · 0 评论 -
[Unity-13] Unity 3D 遮挡剔除(仅专业版) Occlusion Culling (Pro only)
Occlusion Culling is a feature that disables rendering of objects when they are not currently seen by the camera because they are obscured by other objects. This does not happen automatically in 3D转载 2014-10-28 16:33:10 · 2055 阅读 · 0 评论 -
[Unity-12] 切换Button的图片
我们来做一个按钮的图片切换。功能,就像播放器的“开始”和“暂停”。编写TestButton.cs脚本:[csharp] view plaincopyusing UnityEngine; using System.Collections; public class TestButton : Mon转载 2014-10-13 18:23:26 · 12157 阅读 · 0 评论 -
[Unity-28] 反编译并修改DLL文件
大家开发过程中难免需要用一些第三方的插件,而很多插件提供商出于各种目的一般会将插件部分代码编译为动态链接库DLL。有时候,我们需要对库中的一些内容进行简单的修改,例如我们项目中采用的一个DLL把处理文件的路径写死在DLL里,但是此路径与我们工程项目路径规划冲突,因此产生了修改此路径的需求。具体方法比较简单,工具也都很好获得,步骤如下。一、准备工具1.ILSpy:一款免费的反编译软件。笔者...原创 2019-09-01 00:34:43 · 4199 阅读 · 0 评论