Unity前期学习的内容,以及一些可能遇到的问题

Unity 引擎

学习引擎的三大技巧

1. 坐标系,方向感

2. 代码的调用(面向组件的代码调用)

3. 空引用的解决

 

Unity3d的软件的一些基本知识(还有前期遇到的一些问题)

>Assets:用于存放工程资源

>Hierarchy层次面板

>Scene可视化面板

>Inspector看当前对象的组建信息

这四个面板相互之间都是关联的

>资源商店window--->Assets Store 快捷键:Ctrl+9

>选择平台File--->Buil Setting

>创建对象的时候,选中一个对象,右击Duplicate可以快速复制

>选中一个对象,新建对象的时候,会与选中的那个对象形成父子关系

>定点吸附:选择物体后按住V键,定位定点,再拖拽的目标位置

>每创建出来一个新的对象,都要看一下是否在想要的位置,可以在选中对象,在Hierarchy窗口中的Transform右击,选中reset

>如果想要运行的时候,视角在自己想看到的位置,可以调整好视角,然后在Scene中选中Main Crame,然后选择菜单栏GameObject->Align With View

>运行界面下做出的东西,取消运行后不会保存

>添加模型的时候,蓝色立方体右下角带白色的是模型,不带白色的是预设体PrefabPrefab预设体,是指提前准备好的物体

>在Assets中右击选中Import  Package发现只有Custom Package是因为缺少了UnityStandardAssetsSetUp.exe,安装之后重新打开Unity就可以了

>Inspector面板中,每个组件前面都有一些对勾,不勾选的话就不显示

>在Scene视图中右上角有个坐标,表示的世界坐标系,红色代表X,绿色代表Y,蓝色代表Z

>Inspector面板中,Mesh Render:渲染网格Mesh Filter:描绘网格 Box Collider:添加碰撞器

 

脚本组件

>Unity的组件资源,路径,组件,脚本中都不能有中文路径

>在修改Script名字的时候,要看组件下是否与Script一直,否则要删除重新添加,但是一定要确保你的脚本和类名一致,否则添加不上  先创建脚本,再添加组件

>有时在VS中你创建的脚本的继承类MonoBehavior并没有变颜色,所以在写方法的时候不会有提示,而且会报错,这时候可以关闭VS,再重新开启

>要想成为一个组件,必须直接或者间接继承MonoBehavior,否则不能被挂载

>如果运行之后没有达到你想要的效果,先查看有没有挂载在对象上(如果想让这个脚本成为组件,先创建再挂载,再编写)

>脚本的生命周期

Awake:游戏对象被唤醒的时候被自动调用,就算不挂载也会自动调用这个方法(仅走一次),一般常用来获取某些游戏对象的组件

OnEable只要当前脚本组件所挂载的游戏对象被勾选一次,就会调用这个方法一次

Start 常用数据逻辑初始化,用来初始化对象,[也就是说,来修改对象的基本特征]

FixedUpdate 固定频率的调用,一本在里面写一些跟物理有关的操作 Edit——ProjectSetting——Fixed Timstep(默认为0.02)

Update 不是固定频率的调用,取决去硬件[每一帧调用一次,也就是渲染场景的时候调用一次]

LateUpdate 在Update之后,一般写一些跟随逻辑,比如摄像机等,避免抢帧

OnGUI一般用来做测试,一帧调用两次

OnDisableOnEnable对应,每当被取消勾选调用一次

OnDestroy只要游戏对象被销毁时调用一次,仅一次

>Unity Tools for VS 可以使Unity的Console与VS关联,首先要在调试的代码上添加断点,点击附加到VS,启动VS,再启动Unity,来查看这行代码运行没有,还有一种方法就是,在可能出错的代码前后打印上输出,看有没有执行这个方法

>如果报错出现NullReferenceException(空引用)就表明有一个变量没有赋值,或者没拿到该拿到的东西

>GameObject只能拿到激活状态下的游戏对象 

每当开始写代码的时候一定要先进行注释,表明此脚本是挂载在那个游戏对象上

m_Cube.GetComponent<MeshRenderer>().material.color=Color.blue;

这句代码就是拿到m_Cube的组件,利用了泛型,拿到了它的MeshRenderer(渲染网格),拿到它的材质,颜色属性,来更改颜色

M_Cube.SetActivebool value)这个方法就是来设置是对象不被勾选,不显示

>在给脚本起名字的时候不能与系统已经存在的类,关键字重名

>本地位置,本地旋转,本地缩放,都必须要有父物体,才有不同可言 Inspector面板中的Position都是本地坐标数据

>transformparent.name(父对象名字),count(子对象的数量),root.name(根目录) 

>transform,当前脚本组件所挂载的游戏对象(直接就是代表了这游戏对象本身)

Transform:是一个类,表示Transform组件 

Vector3.up  Y轴正向Vector3.right  X轴正向Vector3.forward  Z轴正向

void Translate(Vector3 translation),如图-----Translate默认的空间是本地坐标

void Rotate()按给定的欧拉角进行旋转,Space是一个枚举,有World(世界)Self(自身),可以设置是按照世界坐标进行旋转,还是按照自身坐标进行旋转 

>Vector3

normalized(属性)是用来的到原向量的单位向量

Normalize(方法)是将原向量做成方向不变,大小不变的向量

在两个向量是夹角要用到 Vector3.Angle方法,例如Vector3.Angle-ABOB)是BAOB之间的夹角度数

向量的朝向=目标位置-起始位置

magnitudeDistance都可以求向量的距离,后者是Vector的一个方法 

Vector3 Lerp(Vector3 from, Vector3 to, float t)

要清楚什么时候用=什么时候用+=

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值