赞
踩
1.定义一个自己的窗口:EditorWindow.GetWindow(窗口类型,窗口是否浮动,窗口的标题)
要引用using UnityEditor;
例如:using UnityEngine;
using System.Collections;
using UnityEditor;//注意要引用
public class MyWindow: EditorWindow
{
[MenuItem("Window/MyWindow")]//在unity菜单Window下有MyWindow选项
static void Init()
{
MyWindow myWindow = (MyWindow)EditorWindow.GetWindow(typeof(MyWindow), false, "MyWindow", true);//创建窗口
myWindow.Show();//展示
}
}
2.Selection类是编辑器类,使用需要using UnitryEditor;且脚本要放在Editor文件夹。
(2018版本可以使用Window->PackageManager管理Packages中的文件夹)
3.打包apk
(1)安装JDK与SDK(android-sdk-windows)SDK下载地址:http://www.androiddevtools.cn
(2)配置JDK路径
变量值:C:\Java\jdk1.6.0_22\bin
(3)打开Edit-Preferences选项-External Tools-Android(填好SDK与JDK的路径)
(4)切换到Android平台下打包
4.using Random = UnityEngine.Random;解决UnityEngine与C# System中Random的冲突
5.摄像机
益智游戏:相机处于静态显示全部视角
第一人称射击游戏:相机作为玩家角色的子对象
赛车游戏:相机跟随玩家的车辆
创建多个小视图:导弹控制器、小地图、后视镜
Camera.main.layerCullDistances脚本函数设置每一层的剔除距离
Render Texture 渲染纹理:可以方便地创建体育场大屏幕、监控摄像机、倒影等等效果。用来创建一个直播监视器
渲染路径:影响灯光和阴影:Deferred Lighting延时光照(最高保真度):有很多实时灯光,使用延时光照(仅在unity上有用,在移动端无效)
Forward Rendering正向渲染:在默认设置中,少数最亮的灯 光在逐像素计算光照模式下渲染
Vertex Lit顶点光照(最低保真度):用于旧机器或受限制的移动平台上
6.light光照
某个地方的光照是不变的:光照贴图
7.判断点击的是否是UI
在窗口端进行判断时使用:
If(Input.GetMouseButtonDown(0)&&!EventSystem.current.IsPointerOverGameObject()){…}
在Android上运行时使用:
if(Input.touchCount>0&&Input.GetTouch(0).parse==TouchPhase.Began)
{
If(!EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId()))
{ ……}
}
8.协程:等待一个加载完成 yield return www;
void Start(){
StartCoroutine(TestFunc());
}
IEnumerator TestFunc(){
Debug.log(1);
yield return StartCoroutine(TestFunc1());
for(int i=0;i<10;i++)
{
Debug.Log(3);
}
}
IEnumerator TestFunc1(){
for(int i=0;i<10;i++)
{
Debug.Log(2);
}
yield return new WaitForSeconds(10);
Debug.Log(4);
}
答案为:1
2(输出10次)
4
3(输出10次)
注:1.在协同中yield return 另一个协同时必须有返回值即执行完毕才能执行之后的代码。
2.协同程序慎用
3.同一时刻、一个脚本实例中可以有多个暂停的协程,但只有一个运行着的协程
4.函数体全部执行完后,协程结束
9.委托与事件:声明一个事件类似于声明一个进行了封装的委托类型的变量。
delegate可以引用静态函数,也可以引用非静态函数。
class Heater
{
public delegate void BoilHander(int param);
public event BoilHander boilHander;
private int temperature;
public void BoilWater()
{
for(int i=0;i<100;i++)
{
temperature=i;
if(temperature>95)
{
If(boilEvent!=null)
boilEvent(temperature);
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。