什么是API

        API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

API关系图(部分)

Object

Unity可以引用的所有对象的基类。

UnityEngine.Object类是Unity所有内置对象的基类。

任何从UnityEngine.Object继承类的公共变量,都可以作为一个拖放目标。

函数:

FindObjectOfType:返回第一个类型为 type 的已加载的激活对象。

//public static T FindObjectOfType ();
//public static T FindObjectOfType (bool includeInactive);
//public static Object FindObjectOfType (Type type);
//public static Object FindObjectOfType (Type type, bool includeInactive);CanvasRenderer canvas = FindObjectOfType<CanvasRenderer>();
//CanvasRenderer canvas = Object.FindObjectOfType<CanvasRenderer>();

FindObjectsOfType:返回类型为type的对象的数组Object[]。

GameObject

Unity场景中所有实体的基类。

变量(部分):transform:附加到此GameObject的Transform。

tag:此游戏对象的标签。

layer: 此游戏对象所在的层。

scene:此游戏对象所在的场景。

构造函数:

//public GameObject ();
//public GameObject (string name);
//public GameObject (string name, params Type[] components);GameObject game = new GameObject("gameobject",typeof(Rigidbody),typeof(BoxCollider));
game.AddComponent<CapsuleCollider>();

函数:

AddComponent:将类型为componentType的组件添加到该游戏对象。

//public Component AddComponent(Type componentType);Collider collider = this.gameObject.AddComponent<Collider>();
//Collider collider = this.gameObject.AddComponent(typeof(Collider)) as Collider;

GetComponent:若该游戏对象附加了类型为type的组件,则返回该组件,否则返回null。

//public Component GetComponent (Type type);Rigidbody rb = this.gameObject.GetComponent<Rigidbody>();
//Rigidbody rb = GetComponent<Rigidbody>();
//Rigidbody rb = gameObject.GetComponent(typeof(Rigidbody)) as Rigidbody;

SetActive:根据给定布尔值激活/停用gameObject。

//public void SetActive (bool value);this.gameObject.SetActive(false);
SetActive(true);

FindWithTag:返回一个标记为tag的活动GameObject,未找到返回null。

//public static GameObject FindWithTag (string tag);GameObject player = GameObject.FindWithTag("player");

Component

UnityEngine.Component是所有附加到游戏对象的基类。

主要用来获取游戏对象所涵盖的刚体等相关内容。或对其它游戏对象发送消息。

变量:transform:附加到此 GameObject 的 Transform。

gameObject:此组件附加到的游戏对象。始终将组件附加到游戏对象。

大多数变量已被弃用,通过GetComponent函数获取弃用的变量。如:

Rigidbody rigidbody = component.GetComponent<Rigidbody>();

Transform

对象的位置、旋转和缩放。

//foreach (Transform child in transform) //遍历子项this.transform.localPosition = new Vector3(0,0,0); //相对于父变换的变换位置。
this.transform.localRotation = new Vector3(0,0,0); //相对于父级变换旋转的变换旋转。
this.transform.localScale = new Vector3(1,0,0);    //相对于 GameObjects 父对象的变换缩放。this.transform.parent; //变换的父级。
this.transform.root;  //返回层级视图中最顶层的变换。//Find:查找名称为name的子项。
Transform child = this.transform.Find(name); //Translate:根据 translation 的方向和距离移动变换。
this.transform.Translate(Vector3.forward*Time.deltaTime);  //相对自身移动。
this.transform.Translate(Vector3.up*Time.deltaTime,Space.World); //相对世界坐标移动。//Rotate:以各种方式旋转GameObjects。
this.transform.Rotate(90.0f,0.0f,0.0f);  //绕x轴旋转90°。
this.transform.Rotate(90.0f,0.0f,0.0f,Space.World);//SetParent:设置变换的父级。
this.transform.SetParent(parent);
this.transform.SetParent(parent,worldPositionStays);

Rigidbody

通过物理模拟控制对象的位置。

物体添加Rigidbody组件后,运动受Unity物理引擎控制。在脚本中推荐使用FixedUpdate函数来施加力和更改Rigidbody设置。原因是物理更新在测量的时间步骤中执行,而时间步骤与帧更新不一致。FixedUpdate 在每次进行物理更新前调用,因此在该函数中做出的任何更改都将直接处理。

Rigidbody rb = GetComponent<Rigidbody>();
rb.mass = 1;   //刚体的质量。
rb.drag = 20;   //对象的阻力。阻力越大,对象越慢。
rb.freezeRotation = false; //控制物理是否会更改对象的旋转。
rb.useGravity = true;   //控制重力是否影响该刚体。
rb.isKinematic = true;  //控制物理是否影响刚体。

Collider

所有碰撞体的基类。

//isTrigger:碰撞体是否为触发器。
//center:中心点相对于物体位置的坐标。void OnCollisionEnter(Collision collision){//当碰撞体接触另一个碰撞体。//Collision用于描述碰撞。
}void OnCollisionExit(Collision collisionInfo){//当碰撞体停止接触另一个碰撞体。
}void OnCollisionStay(Collision collisionInfo){//当碰撞体停留在另一个碰撞体。每帧调用。
}void OnTriggerEnter(Collider other){/*GameObject和另一个GameObject碰撞时,Unity调用OnTriggerEnter。两个GameObject碰撞时,OnTriggerEnter在FixedUpdate函数上发生。注:两个 GameObjects 都必须包含 Collider 组件。其中一个必须启用 Collider.isTrigger,并包
含 Rigidbody。如果两个 GameObjects 都启用了 Collider.isTrigger,则不会发生碰撞。如果两个
GameObjects 都没有 Rigidbody 组件,情况同样如此。*/
}void OnTriggerExit(Collider other){}
void OnTriggerStay(Collider other){}

Renderer

所有渲染器的常规功能。

还有其他的一些renderer如:Line Renderer,Mesh Renderer等。

Renderer rend = GetComponent<Renderer>();
rend.enabled = true;   //控制渲染器的启用和停用。
rend.isVisible = true;   //控制渲染器在任何相机中是否可见。
rend.material;   //返回指定给渲染器的实例化材质

Camera

摄像机,供玩家观看世界的设备。

//fieldOfView:相机的垂直视场。
//depth:摄像机在摄像机渲染顺序中的深度。深度较低的摄像机在深度较高的摄像机之前渲染。

Unity学习笔记 - API相关推荐

  1. 我的Unity学习笔记----------API常用方法和类详解(四)

    二十三. Camera组件(类) 通过获取camera组件把场景中鼠标的位置(点)转化为射线 mainCamera=GameObject.Find("MainCamera").Ge ...

  2. Unity学习笔记(4)-----粒子效果的实现

    Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...

  3. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

  4. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  5. Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档

    Unity学习笔记:个人学习项目<疯狂天才埃德加>纠错文档 本文档是完成学校Unity课程作业时建立的纠错文档.用于记录自己开发过程中遇到的各种问题,以便下次遇到相同的问题时及时找到解决方 ...

  6. Unity学习笔记:Unity 3D 飞机大战

    Unity学习笔记:Unity 3D 飞机大战 1.打开unity软件后,首先新建Quad作为背景,导入飞机模型,并为其添加刚体 然后创建C#脚本,挂载到飞机上. 2.给飞机创建子弹,让子弹成为预制体 ...

  7. 【Unity学习笔记】UnrealToUnity教程:(网上购买的素材导入Unreal+插件转Unity)

    [Unity学习笔记]UnrealToUnity教程: 最近想从Unreal那边化点缘借借素材,没想到踩到一个大坑 一,素材导入Unreal 这个教程比较多,根据素材的来源,传送门是以下这几个: 1. ...

  8. unity学习笔记-特效篇

    unity学习笔记 传送门特效 火焰特效 传送门特效 由于动画师的动画制作遇到了一些小问题,只能先做其他功能的摸索了~ 本来想记录一下服务器搭建的,但是在消息传输的部分遇到了一些bug,可能是消息解析 ...

  9. Unity学习笔记:监听函数有什么卵用?(似乎就是从一件事过渡到另一件事?)

    Unity学习笔记:监听函数有什么卵用?(似乎就是从一件事过渡到另一件事?) 个人学习经验,仅供参考,欢迎各位码友批评指正. 做项目敲代码时,一直不是很理解监听函数是个什么玩意. 按我目前的理解,说白 ...

最新文章

  1. DevOps笔记-03:DevOps可以给我们带来什么?
  2. android手机定位
  3. 食物链 POJ - 1182(带权并查集模板)
  4. Linux Command Line 解析
  5. CentOS7设置自定义开机启动,添加自定义系统服务
  6. allt什么意思_Allt是什么意思
  7. 每日一题[LeetCode 689]三个无重叠子数组的最大和
  8. 95.不同的二叉搜索数II(力扣leetcode) 博主可答疑该问题
  9. 计算机教室配套,中小学标准音乐教室建设及设备配套方案
  10. python中矩阵怎么表示_python中的列矩阵表示
  11. 服务器系统启用来宾用户,系统日志中出现Internet来宾账户
  12. Doris内置函数Split_part()性能影响分析测试
  13. HTML表格,列表,超链接,图片
  14. qprocess qt 打开word_Qt QProcess启动和关闭外部程序
  15. 基于Redis的消息中心缓存搭建
  16. 2015多校第9场 HDU 5405 Sometimes Naive 树链剖分
  17. Mysql数据库报错:Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY
  18. 卡塔尔世界杯--程序员的诗和远方
  19. 大学物理复习4-保守力(做功)+功能原理+机械能守恒
  20. 「扫盲」 Elasticsearch

热门文章

  1. ctf入门题库_「ctf比赛」web安全CTF比赛习题(初级) - seo实验室
  2. heu oj 1011 square
  3. 钉钉创建单人群、双人群及钉钉自定义机器人的初步使用(附python3代码)
  4. Dango 之 Xadmin
  5. vim全局搜索当前目录
  6. 逻辑回归LR vs 支持向量机SVM
  7. ES DSL搜索 - prefix、fuzzy和wildcard
  8. “人生苦短,我用Python“——网络嗅探与欺骗
  9. Mac上如何下载brew
  10. C语言有必要学的很深入细致吗?