Unity3D

Unity基本操作

Unity基本单位为米,ue4是厘米

Rotation 为度,监事面板是角度,代码里计算的结果是弧度

Scale的单位是倍数。负数为左右镜像

创建工程

必要文件夹:

Sences

Scripts

Prefabs

工程结构

Assets所有素材都在里面,迁移必须

Library临时文件库,迁移工程时不拷贝,临时生成

ProjectSettings 项目设置-》projecversion 项目版本号,迁移必须

Temp缓存文件,可以不拷贝。

Meta文件都是unity生成的导入配置信息,例如图片的分辨率,压缩方式,版本控制时,例如svn一般不上传。

X轴旋转到正负90度,会发生万向死锁

组成

Scene(场景)

编辑游戏中所有的内容

右键控制视角,右键+w/s/a/d,对应视角移动操作。

按住鼠标中间切换移动,松开切换回来

Game(游戏窗口)

游戏中真正显示的内容

Project(资源窗口)

包含项目中所有的资源,对应工程下Asset目录

右键-》show in exploder  打开对应文件夹

Hierachy(对象实例化的窗口)

游戏世界中所包含的内容。

Inspector(信息面板、检视面板)

Console(控制台)

Debug.Log();

Unity中视觉窗口所有内容都称为Gameobject

坐标

Unity2d的(0,0)点是game窗口左下角。3d使用左手坐标系。

相对坐标和绝对坐标

库函数

UnityEngine->unity库。

class只有继承了MonoBehaviour才能挂到gameobject身上

DeBug类

日志输出

Log 输出,黑色

LogError 打印红色日志,错误

LogWarning 打印黄色警告日志

属性

name属性是当前脚本所在游戏物体的名字

警告处理

1、如果出现了the referenced(引用) script  on this Behaviour is missing ,选中后下发有描述,一般此错误有两种可能,一是脚本被删除,二是脚本名或类名被改变了。

2、如果脚本丢失,建议先删除再重新添加。

3、脚本名必须和类名一致

错误处理

error CS0103: The name `XXX' does not exist in the current context xxx类不存在

error CS1501: No overload for method `xxxx' takes `n' arguments  xxxx方法参数数量有误

unity对大小写敏感。

NullReferenceException(异常): Object reference not set to an instance of an object空引用异常

error CS0266: Cannot implicitly convert type `UnityEngine.Component' to `UnityEngine.Transform'. An explicit conversion exists (are you missing a cast?) 不能转换类型

消息函数

不是主动调用,通过消息机制调用的函数。例如start(),update()

SendMessage()发送消息的方法,所有的gameobject对象都可以调用。但不要使用sendmessage,因为效率很低。

生命周期

Awake() 脚本实例化时调用,一般用于初始化,脚本开始只执行一次,Awake在初始化之前调用,在Awake中调用不到其他函数,因为可能还没有初始化。

Start() 脚本第一次启用update前调用(Awake之后执行),也用于初始化,但不同与Awake,后于Awake调用。

Onenble当组件被激活的时候执行(脚本激活时)。

Ondisable当组件被失活的时候执行。

Update() 运行时,每帧调用。屏幕刷新一遍为一帧,人眼为24帧

FixedUpdate() 和update()的帧长不同,FixedUpdate先执行,它的每帧时间完全固定0.02,每帧时间可以在unity中设置,edit中,倒数第三个选项,主要应用于物理受力处理

OnDestroy() 该脚本被移除时调用,同时对应物体被删除时也会调用。(其实还是脚本被删除时调用,删除物体同时也删除了脚本,先删除组件后,再删除物体就不会触发。)

OnGUI(),每一帧调用,和update相同,负责绘制屏幕(game窗口),使用的API是GUI 的类。

物理生命周期

OnCollisionEnter(Collision); 当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionEnter将被调用

OnCollisionExit(Collision)当此collider/rigidbody停止触发另一个rigidbody/collider时,OnCollisionExit将被调用。

OnCollisionStay(Collision)当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionStay将会在每一帧被调用。

OnTriggerEnter

当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。

OnTriggerEnter2D

当另一个对象进入到这个对象附加的触发碰撞器时发送消息(仅2D物理)。

OnTriggerExit

当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。

OnTriggerExit2D

当另一个对象离开附加在这个对象的触发碰撞器时发送消息(仅2D物理)。

OnTriggerStay

当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用。

OnTriggerStay2D

当另一个对象停留在这个对象附加的触发碰撞器内时,每帧发送消息(仅2D物理)。

预制体prefab

场景内容是临时存在的,预制体是永久存在的,所以,场景内的物体拖不到预制体的代码中。

创建预制体

将物体直接拖到资源窗口,就能自动创建预制体

游戏中使用预制体的物体,最上方或多出三个属性:select(选中当前使用预制体的文件),apply(应用修改的数据到预制体,所有使用此预制体的物体都会改变),revert点击会恢复默认的预制体数据。

加载预制体

加载预制体,就必须把预制体放在Resources目录下,通过Resources.Load(路径)获取预制体,然后通过Instantiate()实例化。

禁忌:禁止直接使用预制体,因为这样会在运行期间直接修改预制体的数据,停止运行后预制体数据不会还原

Resources目录

该目录属于unity官方指定目录,必须使用此名字,存放资源使用。

一般存放预制体,贴图,音效等内容。

加载通过Resources.Load(“路径及文件名”),或者Resources.Load<T>(路径及文件名);

路径根起点默认为Resources,因此不用写Resources。

例如:Resources.Load<GameObject>(“A”);

加载后需要通过实例方法(Instantiate())添加到世界中。

Instantiate(original: Object, 【position: Vector3, rotation: Quaternion】) 克隆原始物体并返回克隆物体。

Resurces.load是堵塞性加载,加载内容时程序会一直停在这里,加载完成时才会继续往下执行。

Resurces.load加载后,不使用了需要释放掉,否则会一直在内存中加载,使用Resources.UnloadAsset(变量名); 随后变量名一定要置空,否则该变量会变成一个未知指向的野指针。

不要在update中使用Resurces.load

动态资源加载(异步资源加载)

Resources.LoadAsync();异步加载。异步加载不会堵塞主线程

返回ResourceRequest类型的对象,该对象继承于AsynOperation。

AsynOperation中有一个progress进度函数,该值为0-1,常用于场景切换的进度条。

AsynOperation中有属性isDone,是否加载完成

加载完成的资源在ResourceRequest的对象.asset字段中

异步加载常常配合协程使用。

遇到函数Async结尾一定都是异步,sync肯定是同步的。

场景切换

场景类Application类(早期版本使用)

Application.Quit();退出场景,结束游戏

Application.Load ();已弃用。

SceneManager类

使用要先using unityEngine.SceneManager

SceneManager.loadScene(场景索引);

加载场景的异步加载

SceneManager.LoadSceneAsync(场景索引);返回值是asyncOperation类型,也有progress。

异步加载完后会自动跳转场景,不会等待指令。

asyncOperation的allowSceneActiveation属性改为false后,就不会加载完成后自动跳跃了,但此时进度也会永远变不了100%,最大停留在0.9的位置,isDone永远为false,发送跳跃指令后才会完成。

工程与工程之间的资源迁移

导出,再导入

Export package,系统会自动选中所有关联资源

自己用的unity学习笔记(一)——unity3d基础操作相关推荐

  1. class unity 定义类_【Unity学习笔记】C#基础-类(Classes)

    1. 行为类 类(class)是物体导向程序(objected oriented programming,OOP)的关键组成部分. functionality>classes>fields ...

  2. UE5学习笔记01(基础操作二)

    1.Outliner被翻译成"大纲". 2.当按住Shift键移动一个物体时,摄像机会追随被移动的物体,形成一种第三人称视角的感觉. 3.在Outliner中选择一个或者多个物体之 ...

  3. UE5学习笔记01(基础操作一)

    1.Editor播放状态下,Shift + F1可以显示鼠标. 2.Viewport内,鼠标左键上下拖拽是基于自身坐标前后移动视角,左右移动是左右环视:鼠标中键上下左右拖拽是基于自身坐标上下左右移动视 ...

  4. 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    [Unity学习笔记]b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别) 自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 【k8s最容易理解的科普】到底是什么 用处是什么
  2. 《自然》评价“天问一号”成功发射—— 全球深空探索走进新时代
  3. 你想学习Java ?资源都在这里了
  4. 深度理解do{} while(0)语句的作用
  5. sap开发-采购订单更改历史table
  6. concurrent(四)Condition
  7. 光立方体c语言程序,学C语言两个月做的一个旋转立方体!
  8. Java中的JPA是什么意思?
  9. 数据库编程之嵌入式SQL
  10. 转:解决浏览器Adobe Flash Player不是最新版本问题
  11. 各层电子数排布规则_电子数的排布规律
  12. Python数据分析!NBA的球星们喜欢在哪个位置出手!
  13. ZooKeeper源码分析之完整网络通信流程(一)
  14. C# 获取可执行文件EXE(文件夹)路径大全
  15. 网络变压器作用(续):带中间抽头的两个线圈组成的网络变压器及其作用
  16. “新产业50人论坛”之陈柳平:量子通信与量子计算的商业实践
  17. CSDN2018博客之星评选——期待各位大佬的投票!哈哈
  18. 5-14 电话聊天狂人 (25分)
  19. 【点宽专栏】国信证券——关于量化选股之聚类分析的探讨
  20. Thingworx平台:通过kepware将底层PLC变量写入指定数据库的方法

热门文章

  1. 初中信息技术面试计算机网络,2019下半年中学信息技术教师资格面试真题完整版...
  2. CAD梦想画图中“轻松手绘”功能使用方法
  3. 让玩家提升游戏耐玩度的8个小技巧
  4. Steam Deck——硬盘,网络,模拟器一命通关教程
  5. 华宇(大连)一面-20190620
  6. 从单机到多机:多机一定比单机快吗?秒杀系统到底有没有必要用分布式锁?
  7. 微信小程序:中老年用户群体的流量生意如何做?
  8. 更改netbios计算机名,修改你计算机的Netbios名
  9. java poi操作word模版 导出word文档(附工具类)
  10. 帆软BI中界面上如果要替换原有的组件,两种替换方式