Unity的学习笔记

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

}

  }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值