个人Unity学习总结【2022.6.9版】

目录

Part_1

Part_2

Part_3

Part_4

Part_5

Part_6

Part_7

Part_8

Part_9

Part_10​​​​​​​


Part_1

1.复杂效果实现都是简单组件搭载脚本的融合

2.摄像机移动,拉近距离,进入大致场景(只变一个轴的数据,例如z轴)

3.渐变效果的两种实现方式(CanvasGroup)

比较Alpha值的关系,使用Lerp函数,判断两者绝对值,最后赋值结束

DG组件,DOFade();

4.定义脚本后,都要及时在Start()函数中查找声明。

5.按钮组件在Start()函数中,监听鼠标点击事件,生成方法抛出异常。

6.SetActive设置游戏对象活跃状态(true,false)

7.命名空间中引入 UI 和 SceneManagement

8.通过按钮实现场景切换(CTRL+SHIFT+B添加场景)

SceneManager.LoadScene("number or filename");

9.渐变白色图片的射线检测会影响anyKeyDown之后的操作

10.Unity提供的存储数据方式(PlayerPrefs)

SetString DeleteAll DeleteKey

11.写代码要有逻辑思维,透彻分析问题

12.尽力做到高通用性,方便后期加功能

13.对网上的教程不能依赖,仅限于扩充课外知识

14.用Tags标签替代游戏对象名称,提高效率,减少重复纠错时间

15.射线检测原理及代码理解,out决定引用方式,通过碰撞盒返回信息(主摄像机)

16.人物动画以及星标点击动画

17.锁轴(星标凹陷以及人物倾斜),new一个三维坐标向量赋值给形参

18.朝向改变方法(transform.LookAt(Vector 3);)

19.配置文件的三种方式:

C++写工具类,生成二进制代码的txt文件作为游戏地图

Json文件,一套脚本构成基本架构

txt文件存储预制体路径,以逗号,标志为路径分隔符(TextAsset)

20.循环实例化所有游戏人物预制体,但隐藏所有除索引对应以外的游戏人物

21.所有变量都定义为私有封装,此处需要使用索引

22.命名规范,长没关系,一定要用英文把变量解释清楚

Part_2

1.旋转是一个四元数

2.三维向量的计算 a^2=b^2+c^2+2*b*c*cos∠

3.视野的缩放与旋转操作和摄像机有关

4.偏移量不要是一个定值

5.出现问题,及时看if语句的判断条件

6.函数的执行顺序也会影响效果

7.Animator优于Animation

8.动画也是组件,需要添加和使用代码操控播放

9.UI都要写成配置表或者配置文件的形式

Part_3

1.一定要掌握配置文件的写法

2.标签的设置和使用

3.配置文件的格式优选UTF-8,notepad可选择换行模式,选择/n

4.单例模式

5.私有变量的属性声明

6.UI界面的锚点设置!!!

7.脚本分离,不同的脚本做不同的功能

8.学习其他大佬的工具写法

9.慢慢学会优化,简化重复代码

9.使用插件DG.tweening

Part_4

1.标签标签标签

2.功能的实现要考虑所有可能的情况

3.培养逻辑思维,多想

4.熟悉事件系统EventSystem,与触摸和射线检测关系密切

5.使用字典,高效频繁查询数据

6.路径问题或者游戏对象名错误(the object you want to instantiate is NULL )

Part_5

1.游戏对象和脚本命名规范,方便挂载

2.反向思维,减少无效判断次数

3.私有变量运行后,改为公有再赋值会报错(必须改回去再运行一次)

4.配置文件的灵活变通,多种物品一个配置文件

5.学会对物品进行总结分类,归纳

6.Animator属性不存在(Parameter 'xxx' does not exist)

7.Animation(老动画系统) Animator(新动画系统)

8.请求的特性没有实现(The requested feature is not implemented)

9.无效的光标纹理(Invalid texture used for cursor - check importer settings or texture creation.)

10.网络问题(Timed out while fetching user / orgs)

11.继承解决重复性问题(NPC光标变化.......)

13.关掉无用的射线检测Raycast Target(文本,图片.......)

14. 不可访问受保护级别限制的成员('xxx' is inaccessible due to its protection level)

15.功能未实现(Object reference not set to an instance of an object)

16.碰撞盒(Box Collider) 人物控制器(Character Controller)受重力影响

Part_6

1.输出字符串的格式不正确(Input string was not in a correct format.)

2.输入框不输入内容,输出空串,不能作强转

3.提高代码复用性,写死不方便扩展功能

4.抛出异常(throw new System.NotImplementedException();)

5.配置表命名一般以四位数或五位数开始,便于分类 1001、2001或10001、20001

6.普通物品命名:icon-xxx-number 装备物品命名:xxx-icon-number

7.画布参数不能改变,修改渲染模式Render mode(复习画布知识)

8.使用Sprite Editor精灵编辑器

9.复习Sprite相关知识点

Part_7

1.架构设计很重要,对后期帮助巨大

2.反向思维,解决无效循环,高效使用if语句

3.优化代码

4.修改Unix编码,改变行尾导致的Unity警告

5.父子物体同时挂载脚本报错,子物体身上找不到对应的组件报空

6.增强功能和脚本之间的连调性

Part_8

1.经典报空错误(NullReferenceException: object reference not set to an instance of an object)

2.勤检查脚本挂载,前缀名相同极易挂载错误

3.UI穿透

4.射线检测

5.图片处理 tga(格式工厂转格式、photoshop)

6.数据分离(高内聚,低耦合)

Part_9

1.改了两个BUG(人物属性变化、鞋子穿到盔甲上)

2.UI穿透(if(!EventSystem.current.IsPointerOverGameObject()))

3.设置多个摄像机的优先级,只能一个audio listener 音频监听器

4.摄像机根据层级顺序进行渲染(有效解决遮挡问题)

5.遮罩Mask图片挡住UI

6.表现形式

7.大致状态(巡逻、攻击、站立)

Part_10

1.物体移动的方法:

(1)Vector3.Lerp(vetor3,vector3,float time)    在Update中按一定程度移动物体

(2)Transform.translate    按规定方向移动

(3)RigidBody    施力:AddForce    给速度:Velocity    

(4)ConstantForce    施加恒力

(5)Update里更新物体位置    勾选物体刚体的:iskineamtic选项,视为静态物体

(6)贝塞尔曲线运动    在Update函数中实时根据比例更新物体位置

(7)CharacterController   SimpleMove方法

(8)虚拟按键        Input.GetAxis("xxx")

(9)射线检测        Raycast(Hit,hitInfo)

2.Tween类用法解析:

Tween生成一个ScriptsTool物体,用于挂载Tween功能脚本,所有功能基于脚本调用

取消Delay的两种配套方式:

(1)Tween.delay(float time,Action callback)    Tween.cancelDelay(Action callback)

(2)Tween.target(xxx.transform).delay(float timeAction callback)    Tween.remove(xxx.transform)

3.关卡切换常用代码:

SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1)

4.使用过的插件:

URP:用于渲染管线

Cinemachine:用于虚拟摄像机

JEngine:用于热更新

5.自定义层级:

管理物理系统

Physics——Layer  Collision  Matrix    层级碰撞矩阵

6.UGUI触摸监听的两种方式:

触摸层必须比地板稍微高一些
都需要一个带碰撞体的触摸层,接受摄像机的【Physics Raycaster】组件响应

都需要写一个表示游戏主逻辑的MainGame脚本,写按下、拖拽、松掉的三种方法

(1)将Event Trigger直接放在触摸层    拖入Scripts的响应方法

(2)将Event Trigger放在Canvas的一个Image物体下    将触摸响应通过射线转换到场景中实际的响应

7.Unity中C#脚本的执行顺序,对生命周期函数存在影响,例如Awake()和Start();


版权声明:本文为weixin_51669718原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。