脚本生命周期

//每当脚本被加载时调用一次

// 1.   在Awake中做一些初始化操作

void Awake(){

//初始化public成员

}

// 2.   在每次激活脚步时调用

void OnEnable(){}

//在第一次调用Update之前调用一次Start,即使取消激活,再激活也不会再执行

// 3.   在Start中做一些初始化操作

void Start(){

//一般做一些私有成员

}

// 4.   每帧调用一次Update

void Update(){}

// 5.   在Update方法调用完之后调用

void LateUpdate(){}  //如刷新完逻辑操作

// 6.   取消激活状态后调用

void OnDisable(){}

// 7.   脚步被销毁时调用

void OnDestroy(){}  //如怪物死亡爆东西

// 8.   持续调用  - IMGUI代码需要写在OnGUI 方法中和UGUI,NGUI

void OnGUI(){

}

// 9.   以固定的频率调用,不会受到图像刷新帧速率的影响

//一般我们会把处理物理的代码放在这里

void FixedUpdate(){}

Input

//n参数 0 鼠标左键

//n参数 1 鼠标右键

//n参数 2  鼠标中建

Input.GetMouseButtonDown(n)  //检测鼠标按键按下事件

Input.GetMouseButtonUp(n) //检测鼠标按键弹起事件

Input.GetMouseButton(n) //检测鼠标持续按下的事件

GameObject

//gameObject 获取当前脚本所挂载的游戏对象

//一般来说,在属性视图中能看到或修改的属性,我们同样可以在脚本中获取并修改

gameObject属性如

1. name  、tag  、

2. gameObject.activeSelf   //获取当前游戏对象的激活状态 bool类型

3. gameObject.SetActive   //设置游戏对象的激活状态

//4. 获取游戏对象身上的组件 如

controller c = gameObject.GetComponent<objectname>();

//5. 给游戏对象添加指定类型的组件

Light l = game.AddComponent<Light>();

//6. 通过tag值查找游戏对象

GameObject g  = GameObject.FindGameObjectWithTag(“TagName”);

GameObject gg = GameObject.FindWithTag(“TagName”);

//7. 通过游戏对象名查找游戏对象

GameObject g = GameObject.Find(“Object Name”):

g.name = “改名”;

//8. 通过Tag值查找多个游戏对象

GameObject [] gs = GameObject.FindGameObjectWithTag(“Object Name”);

//9. 销毁游戏对象  可加参数2:延迟时间(s)后销毁

GameObject.Destroy(gameObject,2f);

Vector

1. 一个类,表示向量,向量既有大小又有方向的量

Vector3  v = new  Vector3();

成员方法:

2. //获取V的单位向量 V的长度会变成1,但方向不变

v.Normalize();

3. //返回V方向上的单位向量,但是V本身不会发生变化

Vector3 vn = v.normalized;

4. //获取V的长度

float l = v.magnitude;

5. 类方法:

// x=0,y=1,z=0

Vector3.up 表示世界坐标系中Y轴正方向的单位向量

// x=0,y=-1,z=0

Vector3.down 表示世界坐标系中Y轴负方向的单位向量

// x=1,y=0,z=0

Vector3.right 表示世界坐标系中X轴正方向的单位向量

// x=-1,y=0,z=0

Vector3.left 表示世界坐标系中X轴负方向的单位向量

// x=0,y=0,z=1

Vector3.forward 表示世界坐标系中Z轴正方向的单位向量

// x=0,y=0,z=-1

Vector3.back 表示世界坐标系中Z轴负方向的单位向量

// x=0,y=0,z=0

Vector3.zero 表示原点

6. //求两个向量的夹角 参数都是Vector的对象

float f = Vector.Angle(V1,V2);

7. //求两个向量的距离

float f = Vector.Distance(V1,V2);

8. //向量点乘

float d = Vector3.Dot (v1,v2);

//两个向量的叉积

Vector vc  = Vector3.Cross(v1,v2);

Transform

//获取当前脚本所挂载的游戏对象身上的Transform组件

//transform

1. //控制游戏对象的位置、旋转、缩放

//position  属性 - 世界坐标系中的位置

Vector3 pos = transform.position;

2. //localPosition 属性 - 局部坐标系中的位置

transform.localPosition

3. //一般不直接修改四元数

transform.rotation

transform.localRotation

4. 快捷键:对象

Q平移 W移动 E旋转 R缩放

5. //localScale - 控制游戏对象的缩放

Vector3 v = transform.localScale;

6. //变换当前游戏对象

transform.Translate (new Vector3(0,1,0));

7. //旋转当前游戏对象

transform.Rotate (Vector.up,10f);

8. //欧拉角 - 属性(直接旋转角度,不会重复旋转)

transform.eulerAngles = new Vector(0f,45f,0f);

9. //控制游戏对象间的父子关系

//获取/重新指定 当前游戏对象父对象的transform组件

transform.parent;

10. //获取当前游戏对象的根父对象

transform.root;

11. //获取当前游戏对象  叫做name 的子对象

transform.Find(“name”);

transform.FineChild(“name”);

Time

1. //Time类用来进行时间控制

float t = Time.time; (从游戏开始到当前所用时间)

2. //从上一帧开始到当前帧结束,这两帧之间的时间间隔

Time.deltaTime

3. //让当前游戏对象每秒准确地旋转 30 度

transform.Rotate(Vector3.up , Time.deltaTime * 30f);

4. //表示时间流逝的快慢

// 1 - 表示正常时间流逝

// 2- 表示时间流逝加快,是正常速度的两倍

// 0 - 表示时间停止,游戏暂停

float ts = Time.timeScale;

Mathf

1. //求绝对值

int i  = Mathf.Abs(-12);

2. //求最大最小值

int m =  Mathf.Max(12,15,15,17);

int ni = Mathf.Min(12,14);

3. //三角函数

Mathf.Sin();

Mathf.Cos();

Mathf.PI();

Mathf.Sqrt(); //平方根

Prefab 预设体

例子:

public GameObject playerPrefab;  //预设体 从外面挂载进来

Vector pos = new Vector3 ();

pos.y  =  0.5;

pos.x  =  Random.Range(-5f,5f); //给一个范围随机数产生坐标

pos.z  =  Random.Range(-5f,5f);

float angle = Random.Range.Range (0f,360f);

1. 动态添加预设体

//参数1:预设体

参数2:  创建出的游戏对象初始位置

参数3:  创建出的游戏对象初始旋转角度  四元数旋转角 (不需要的参数都可不加)

Instantiate (plagerPrefab , pos , Quaternion.AngleAxis (angle, Vector3.up));

2. 若要接收,Instantiate返回的类型是object,所以要转换

GameObject g =  Instantiate (plagerPrefab , pos , Quaternion.AngleAxis (angle, Vector3.up)) as GameObject;

g.AddComponent<Light>(); 可往添加组件

鼠标事件

必须物体的Collider被激活,否则无法触发

1. 当鼠标点击下去时调用

void OnMouseDown(){}

2. 当鼠标持续按下左键不放时调用(可在物体外松开取消调用)

void OnMouseDrag(){}

3. 当鼠标取消点击时调用

void OnMouseUp(){}

4 当鼠标进入到内部时调用

void OnMouseEnter(){}

5. 当鼠标持续停留在游戏对象身上时调用

void OnMouseOver(){}

6. 当鼠标离开内部时调用

void OnMouseExit(){}

7. 当我们像点击按钮一样点击游戏对象(在对象内部松开才能生效,离开物体无效)

void OnMouseUpAsButton

刚体 Rigidbody

刚体使用使物体位移和transform同时使物体位移是不对的,只能使用其中一个

属性:

Mass质量

Drag空气阻力

Angular Drag角阻力(旋转时受的)

Use Gravity 重力影响

Is Kinematic  是否使用运动学

Interpolate 插值 (如物体不停的颤抖时可试用)

内插值 Interpolate

根据上一帧的位置推算这一帧的位置

外插值 Extrapolate

预测下一帧的位置推算这一帧的位置

Constrains Detection 碰撞检测

Discrete 离散碰撞检测

Continuous 连续碰撞检测 (如子弹速度太快,上下帧时已经传过障碍物,对高速运动)

Continuous Dynamic 连续动态碰撞检测 (两个都是高速的碰撞)

Constraints 约束

让物体在某个轴上无法位移

freezePosition

让物体在某个轴上无法旋转

freezeRotation

Rigidbody rb = GetComponent<Rigidbody>();

//添加力  力的物体上必须有刚体

要有添加爆炸力脚本的对象才会受影响

1. //给当前游戏对象施加一个力

rb.AddForce(new Vector3(0f,10f,0f));

2. //给当前游戏对象添加力矩/扭矩,扭矩可以使物体旋转

rb.AddTorque(new Vector3(0f,10f,0f));//y轴施力

3. //给游戏对象在指定的位置上添加一个力

rb.AddForceAtPosition(new Vector3(0f,10f,0f), new Vector(0.5f,0.5f,0.f));

4. //在指定位置添加一个爆炸力

//参数1:爆炸力大小       参数2:爆炸位置  参数3:爆炸范围半径

rb.AddExplosionForce(1500f, Vector.zero,4f);

Collider

发生碰撞的条件:

1.双方都有Collider,2.至少一方有刚体, 3.两个物体之间发生相互运动

(去碰撞的物体最好要有刚体,否则可能发生穿越,无触发碰撞 )

1. //碰撞相关的三个事件

//碰撞开始时会调用一次

void OnCollisionEnter (Collision other){}

2. //当碰撞持续发生的时候调用

void OnCollisionStay (Collision other){//检测跟谁发生了碰撞

if(string.Equals (“Cube2” , other,gameObject.name))

}

3. //碰撞结束时调用一次

void OnCollisionExit (Collision other){}

Trigger

如果Collider中的 is Trigger选中了,那么该物体无法使用刚体,但能使用触发器

触发器事件条件:

1.双方有Collider 2.一方勾选Trigger 3.一方有刚体 (或角色体Character)

4.进入触发范围后不用一定要有相对运动

触发器相关的三个事件 //如 CS进入安全区

4. //刚刚进入触发范围时调用一次

void OnTriggerEnter (Collider other){}

5. //持续待在触发范围内会一直调用

void OnTriggerStay (Collider other){}

6. //离开触发范围时会调用一次

void OnTriggerExit (Collider other){}

材质

Create -> Physic Material 只有在有Collider得物体上才能添加

Physic Material 物理材质

属性

Dynamic Friction 动摩擦力  A在B运动受到的摩擦力

Static Friction 静摩擦力

Bounciness 弹性

弹力摩擦力结合情况

Friction Combine

Bounce Combine

子属性: Average 平均值

Minimum 最小值

Multiply 相乘

Maximum 最大值

Unity重要知识点相关推荐

  1. Unity Shader知识点(二)写一个基础漫反射Shader

    前言 我们刚学习Shader时,往往会被计算机图形学相关复杂的数学.物理知识所困扰,并在学习过程中丧失兴趣.个人以为,在代码以外,学习Shader应当有本科线性代数课程基础的概念框架,在这一基础上,完 ...

  2. 【100个 Unity小知识点】☀️ | Unity 中怎样读取Excel文件

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  3. 【100个 Unity小知识点】 | 启动unity应用时的 Unity Logo 删除/替换的三种方案

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  4. Unity高级知识点总结:性能优化与图形渲染进阶!

    A.性能优化相关知识 一.综合优化 1.降低屏幕分辨率尤其是在android平台对性能提升很大.可以有效缓解gpu的压力. 我们在android上分辨率是实际的0.85左右. 2.做好资源异步加载,实 ...

  5. 【游戏开发实战】小岛城堡里的常春藤,听新发剖析Unity案例知识点

    文章目录 一.前言 二.效果演示 三.常春藤生成器工具下载 四. 工具使用 1.创建根节点:lvy GameObject 2.创建配置文件:lvy Profile Asset 3.贴图与材质球 4.绘 ...

  6. Unity Shader知识点(三)高光反射Shader

    前言 此文及专栏系是以Shader入门精要为基础整理的Unity Shader学习笔记,尽量以初学者视角还原(其实半年前我就是初学者),错误还需指正. 本篇是实操部分的第三个Shader,即高光反射S ...

  7. unity开发知识点小结01

    unity对象生命周期函数 Awake():最早调用,所以可以实现单例模式 OnEnable():组件激活后调用,在Awake后调用一次 Stat():在Update()之前,OnEnable()之后 ...

  8. Unity Editor 知识点整理( MenuItem)

    public MenuItem(string itemName, bool isValidateFunction); 构造函数 // Creates a menu item and invokes t ...

  9. 【Unity3D 灵巧小知识点】☀️ | Unity 中 怎样切换 天空盒 背景

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

最新文章

  1. Windows Performance Toolkit
  2. cocos2d-x的A*寻路
  3. Java学习|先定一个小目标比如让行为聚焦
  4. parallelstream启动的线程数_谈谈并行流parallelStream
  5. P3 计算机硬件的基本组成
  6. vue ajax加载动画,vue 请求加载数据的时候如何显示加载动画
  7. CSS-10-内边距
  8. 武忠祥.高等数学.基础课-第一章函数 极限 连续P10
  9. c++容器之vector
  10. “头腾大战”烧至在线办公:微信封禁飞书做错了吗?
  11. java 判断ip和port是否存活_java判断IP和端口号是否可以访问
  12. 如何在C ++中使用std :: getline()?
  13. JS基础 - - if 练习二
  14. 使用re-sign.jar对apk进行重签名
  15. 使用邮件合并批量制作工资条并进行发送邮件
  16. 员工考勤iPhone客户端1.0版简介
  17. GPU百科全书(6)谁也离不开的缓冲
  18. 【目标检测】SSD(Single Shot MultiBox Detector)的复现
  19. python爬取公众号文章_python爬取微信公众号历史文章
  20. 通信技术对自动驾驶发展的关键作用

热门文章

  1. PS把证件照的蓝底换成其他底色
  2. 微信内测版来啦:继续沉浸式体验,朋友圈大变样 [联络易]
  3. 基于ST的STM32F030K6T6的超声波氧气浓度传感器模块方案
  4. 优雅使用JsDeliver加速文件
  5. 美信时代监控运维 助力银行“数字化转型”
  6. php调用jssdk转发_微信分享调用jssdk实例
  7. 深入解析 Raft 模块在 KaiwuDB 中的优化改造(下)
  8. 四川单招计算机网络试题,中职对口单招《计算机网络技术》和《软件技术》专业职业技能考试模拟题二...
  9. 基于硬件快照技术来辅助嵌入式系统安全测试
  10. 微信小程序各种数据传输(云数据库、外接服务器、页面引用、全局变量等)