码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-07-10 17:47:02      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:unity   摄像机   抗锯齿   自定义导航菜单   

常用编辑器组件

unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成。常用的编辑器可分为两种:原有组件和拓展组件。原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能。


摄像机

摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示。摄像机组件的参数如下:

bubuko.com,布布扣

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(放射角度):

bubuko.com,布布扣


orthographic(垂直角度):

bubuko.com,布布扣


但在游戏中有时需要动态修改摄像机的类型。那怎么实现咧,这就需要通过代码来实现了。

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 ("新菜单栏/删除选择的对象")]在导航菜单栏中添加一个菜单项,该方法的参数为菜单中子选项的完整路径。

bubuko.com,布布扣


在菜单导航栏里不仅可以绑定方法,还可以绑定脚本:

using UnityEditor;
using UnityEngine;

//添加该脚本至组件菜单栏中
[AddComponentMenu("新的脚本/自动旋转")]
class Script_05_04 : MonoBehaviour {
	
	void Update()
	{
		//自身旋转
		transform.Rotate(0.0f,Time.deltaTime * 200,0.0f);	
	}
}

运行后:

bubuko.com,布布扣



抗锯齿

在3D渲染中,可能会出现锯齿,为什么会出现锯齿,因为为了运行效率而牺牲了渲染效果。在unity中可以设置抗锯齿效果,选择edit——project setttings——quality,此时右侧将弹出如下窗口:

bubuko.com,布布扣

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

原图:

bubuko.com,布布扣

抗锯齿:

bubuko.com,布布扣

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

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

标签:unity   摄像机   抗锯齿   自定义导航菜单   

原文地址:http://blog.csdn.net/u013289188/article/details/37591869

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!