常用编辑器组件
unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成。常用的编辑器可分为两种:原有组件和拓展组件。原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能。
摄像机
摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示。摄像机组件的参数如下:
clear flags:背景显示内容,默认的是skybox。前提是必须在render settings 中设置天空盒子材质。
background:背景显示颜色,如果没有盒子,即显示这个颜色。
culling mask:用于选择是否显示某些层,默认的是everything。
projection:摄像机的类型。
field of view:摄像机的视野范围。
near:一摄像机为圆心,绘制最近点的距离。
far:一摄像机为圆心,绘制最远点的距离。
normalized view port rect:设定Game视图的显示区域参数,多台摄像机可以通过设置各自显示区域先分屏同时显示。
depth:摄像机的深度。若存在多个摄像机,先渲染该值较小的摄像机。
rendering path:渲染路径。
target texture:目标纹理,设置后会挡住摄像机。
摄像机的类型
主要分为两类:放射观察角度,垂直观察角度。那怎么选择摄像机的类型咧?在hierarchy视图中选择摄像机对象,然后在右侧inspector视图中单击projection下拉菜单。可以看见两个选项:perspective(放射角度)和orthographic(垂直角度)。
perspective(放射角度):
orthographic(垂直角度):
但在游戏中有时需要动态修改摄像机的类型。那怎么实现咧,这就需要通过代码来实现了。
using UnityEngine;
using System.Collections;
public class Script_05_02 : MonoBehaviour
{
//摄像机组件
private Camera camera;
void Start ()
{
//获取摄像机组件
camera = gameObject.GetComponent();
}
void OnGUI()
{
if(GUILayout.Button("放射观察",GUILayout.Height(50)))
{
camera.isOrthoGraphic = true;
}
if(GUILayout.Button("垂直观察",GUILayout.Height(50)))
{
camera.isOrthoGraphic = false;
}
}
}
上述代码中使用isorthographic引用来修改当前摄像机的类型,将该变量值赋值为true,表示摄像机类型为垂直观察,false表示为放射观察。
定制导航菜单栏
unity为开发者提供了导航栏菜单的程序接口,使用代码可以动态添加菜单栏的选项及子选项。本例为菜单栏添加一个“新菜单栏”代码如下:
using UnityEditor;
using UnityEngine;
class Script_05_03 : MonoBehaviour {
[MenuItem ("新菜单栏/克隆选择的对象")]
static void ClothObject() {
Instantiate(Selection.activeTransform, Vector3.zero, Quaternion.identity);
}
[MenuItem ("新菜单栏/克隆选择的对象", true)]
static bool NoClothObject() {
return Selection.activeGameObject != null;
}
[MenuItem ("新菜单栏/删除选择的对象")]
static void RemoveObject() {
DestroyImmediate (Selection.activeGameObject,true);
}
[MenuItem ("新菜单栏/删除选择的对象", true)]
static bool NoRemoveObject() {
return Selection.activeGameObject != null;
}
}
我们使用方法[MenuItem ("新菜单栏/删除选择的对象")]在导航菜单栏中添加一个菜单项,该方法的参数为菜单中子选项的完整路径。
在菜单导航栏里不仅可以绑定方法,还可以绑定脚本:
using UnityEditor;
using UnityEngine;
//添加该脚本至组件菜单栏中
[AddComponentMenu("新的脚本/自动旋转")]
class Script_05_04 : MonoBehaviour {
void Update()
{
//自身旋转
transform.Rotate(0.0f,Time.deltaTime * 200,0.0f);
}
}
抗锯齿
在3D渲染中,可能会出现锯齿,为什么会出现锯齿,因为为了运行效率而牺牲了渲染效果。在unity中可以设置抗锯齿效果,选择edit——project setttings——quality,此时右侧将弹出如下窗口:
name:渲染质量等级名称。
pixel light count:渲染像素灯的最大数量。
texture quality选择贴图的质量,质量越好越需要高性能。
anisotropic textures:贴图显示级别。
anti aliasing:设置抗锯齿的等级,其值越大表示效果越好。
soft particles:是否开启混合粒子效果。
shadows:设置阴影的类型。
shadow resolution:阴影的效果级别。
shadow projection:现在阴影效果的分辨率。
shadowcascades:设置阴影的层次等级。
shadow distance:语言的投射距离。
blend weights:节点的重量。
vsync count:设置同步渲染数量。
lod bias:lod的偏移量。
maximum lodlevel:最大LOD等级。
levels表示设置4个不同游戏平台的渲染效果,默认情况,渲染效果分为6个级别:fastest,fast,simple.good.beautiful,fantastic。依次往上表示渲染效果越来越好,但速度慢。
抗锯齿设置anti aliasing级别为8x multi sampling对比如下图会发现效果很明显:
原图:
抗锯齿: