- Componet 决定了GameObject的行为
- 一个空的GameObject 就只有一个默认的Component,就是Transform 。Transform控制GameObject的位置Position,方向Rotation,比例Scale
- 点MainCamera 会出现CameraPreview(Camera所拍摄的内容=Game的内容)
- 运行中可改变对象的属性,但一旦停止运行就会回到场景原来的布局
- Texture 纹理,本质
- 右击Assets—>Show In Explorer 可显示在磁盘中的目录情况(找其所在位置)
(可以在目录中增加东西,但删或者移动最好在Unity中进行) - Material 材质 Create—> Material
将创建的"Material"赋给GameObject的Material - GameObject的父子关系
- Prefabs 预制的(相当于模板)
再拖入场景有Revert 恢复、 Apply应用
其中应用是改变了Prefab,所以所有与该Prefab有关的GameObject全改变 - 打包:File——>BuildingSetting将所要打包的东西打包——>AddOpenScenes加入所要打包的东西
- Material的Shader(着色器)
- Window下的AssetStore可找Unity的资源
- Import 导入 export 导出
- 蓝色字的是有Prefab的
- GameObject的MeshRendered(网格渲染器),打对勾就能看见,不选就看不见
△MeshRendered的Materials属性
将Texture赋给Material,Material赋给GameObject - Collider 碰撞机
- MainCamera的Camera的Projection有Perspective(近大远小3D)和Orthographic(远近相同2D)
- 在Unity里凡是能挂在GameObject上的都是Component(组件)
- Script(脚本)也可作为一个Component,Script要想挂在GameObject上就必须继承MonoBehavior
- Unity如何通过脚本来驱动游戏?
- Instantiate()创建GameObject
- 通过Awake()和Start()来初始化
- Update,LateUpdate,FixedUpdate更新逻辑
- (用OnGUI绘制UI
- OnCollisionEnter等进行物理计算
- OnPreCall等来控制渲染)
- 如何更新逻辑?
场景启动时调用所有脚本的Awake()
⬇
调用所有脚本的Start()
⬇
调用Update()(每帧调一次)
⬇ Update调用完后
调用LateUpdate()(每帧调一次)
⬇
调用FixedUpdate()(一帧调几次) - 对象销毁
调用Destroy销毁GameObject
销毁对象时调用OnDestroy - 脚本间的通信
通过GetComponent 找同一物体上的其他脚本
通过GameObject.Find 找其他物体 - 游戏输入:
- 键盘:
①Edit——>ProjectSetting——>Input设置游戏输入
②在脚本中利用Input类来检测输入状态
③Input.GetAxis返回的值是-1~1之间,0表示没输入 eg.Player.cs- InputManager里:Horizontal 水平的 、Vertical 垂直的
- Horizontal:
- Name 名字 (脚本要用到)
- NegativeButton:负键 eg.值为left:左键头代表作负方向的运动
- PositiveButton:正键
- Alt NegativeButton:备选键
- Alt PositiveButton:备选键
- 鼠标 eg.SceneCamera.cs
- 手机输入(触摸屏)Input.touch…之类的
- 键盘:
- 模型 动画 (.FBX)
- Inspector下的Rig中的
- Animation Type(动画类型)有三种①Legacy(旧动画系统已不推荐使用)②Generic(类的、属性的)③Humanoid(人体形态的动画)
- Avatar Definition(Avatar的定义)(Avatar就是一个像木偶一样的东西)
CreateFromThisModel:本模型的 CopyFromOtherAvatar:别的模型的
- RIg下的Animation(动画)
- ImportAnimation 不选就没有动画的导入,选上就会导入
- Clips 内是包含的小动画 。其中的start和end是开始的帧到结束的帧
- LoopTime ✔(循环播放)
- 动画已经都有了还需要应用动画,在需要加动画的“GameObject”添加Animator组件,
- Animator组件内有:
- Avatar :
将Avater模型赋到该选项下 - Controller:状态机(Create——>AnimatorConroller)
将move赋给Controller选项下
- 状态机:在某种状态下做的动作,一个物体同时只具有一个状态,状态之间可以切换
- 状态机的三个基本要素:状态 、Transition(状态转换的过程(从一个状态到另一个装态))、Parameters(参数)
- 这是一个Animation动画
- 这是一个Controller状态机
- Controller包含多个Animation(动画)也叫状态。可直接将Animation拖进去
-
- 橙色的部分代表默认状态(状态机的起始的状态,也可以更改:右击——>SetAsLayerDefaultState)
- 建立Transition:右击——>MakeTransition
建立Transition的Condition以及脚本的应用
eg:PlayerAnimation.cs
-AnyState
- 状态机的三个基本要素:状态 、Transition(状态转换的过程(从一个状态到另一个装态))、Parameters(参数)
- 状态机:在某种状态下做的动作,一个物体同时只具有一个状态,状态之间可以切换
- ApplyRootMotion ✔ 动画会影响你的GamdeObject的位置,不勾选则不会影响
- Avatar :
- Inspector下的Rig中的
- 动态的生成和销毁一个物体
- 动态生成物体:就是把一个prefab做成模版,在运行时调用Instantiate函数用prefab生成一个实例(GameObject)放在场景中,如果不需要的时候就调用Destroy函数将GameObject销毁掉。
- 但来回生成和销毁,性能开销会很大。所以一般会设个缓存(cache),当不需要的时候放cache里,需要的时候再拿出来
- OnEable()在一个物体或者C omponent被设为active时,OnEable这个事件就会被触发
Unity学习笔记
最新推荐文章于 2024-09-09 22:10:46 发布