您的位置:首页 > 移动开发 > Unity3D

【Unity 3D】学习笔记三十四:游戏元素——常用编辑器组件

2014-07-09 11:01 1116 查看
常用编辑器组件

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<Camera>();

}

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对比如下图会发现效果很明显:

原图:



抗锯齿:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: