Unity2D 学习笔记 0.Unity需要记住的常用知识

Unity2D 学习笔记 0.Unity需要记住的常用知识

前言

从小是一个很喜欢玩游戏的人,大概四岁的时候,在父亲的帮助下,接触了红色警戒,后来又在同一栋楼的好朋友的推荐下,了解到了星际争霸和魔兽争霸。从那时候开始就总想做出一款有着类似星际争霸那样的剧情宏大,玩法新颖的游戏,希望自己能够坚持下去吧。

之后所有的学习笔记都是基于自己一个练手的项目,下面介绍我用的Unity版本,供大家借鉴:

Unity版本:2023.1.12f1c1

使用的VS版本2022

这一章主要是记录一些奇怪的设置,以及一些预设函数名称和用法。将来也会不断补充。

调整Project Setting

Tilemap相关(创建地图块)

C#脚本相关

程序运行函数

private void Awake()

在加载脚本实例时会调用此函数。

此函数的调用比Start更早。

void Start()

在程序开始正式运行之前,调用的用于初始化程序的函数。
注意:仅在首次调用Update函数之前会执行此函数。

void Update()

在每一帧都会运行一次该函数,作为程序的主函数,十分重要。

Collider2D碰撞检测

private void OnTriggerStay2D(Collider2D player)

用于检测是否有物体与该Collider包围盒有接触。只要有物体待在检测框内,便会一直出现结果。具体运行逻辑为:每帧运行一次这个函数,检测相关碰撞。
注意: 这个检测会因为物体进入睡眠状态而停止,如何改变睡眠状态见后文Debug部分。

private void OnTriggerEnter2D(Collider2D player)

用于检测物体是否进入检测框,只会在进入的瞬间运行。

如何确定碰撞物体的性质

  1. 利用碰撞物体的tag进行标识,如上图。

关键词

this

用于代指该脚本类,这与C++中相关概念类似。

gameObject

代指该脚本所挂在的gameObject。

void GameObject.SetActive(bool value)

用于设置该对象能否使用,是否激活。

T GameObject.GetComponent<T>()

用于获取该对象的某个组件。

Mathf

一个数学相关的库文件,可以直接引用,不需要Include和Using

Mathf.Clamp(value, min, max)

将value规范化到[min, max]区间内:
v ˉ = m i n ( m a x ( v , m i n ) , m a x ) \bar{v} = min(max(v, min), max) vˉ=min(max(v,min),max)

输入检测Input

键盘输入相关

Input.GetAxis(string name)

用于获取在name方向上的输入,例如有"Horizontal"(水平),"Vertical"(垂直)。具体设置可以在Project Settings>Input Manager 里面修改。

bool Input.GetButtonDown(string ButName)

获取目标按钮的按下状态,如果按下 则返回true。

Unity Component相关

Debug和奇怪问题

1.Q:为什么在碰撞检测脚本中,使用OnTriggerStay2D函数时,物体进入并Stay后,该函数只会响应一会,随后便不响应了?

A:这是因为这个物体在Stay过程中,会自动休眠。如果想要改变这个现状,可以修改Edit>Project Settings>Physics 2D>Time To Sleep 这个值,或改变其下面两个参数,来控制休眠时间。

相关推荐
淡海水5 小时前
【节点】[Branch节点]原理解析与实际应用
unity·游戏引擎·shadergraph·图形·branch
唐梓航-求职中5 小时前
编程-技术-算法-leetcode-288. 单词的唯一缩写
算法·leetcode·c#
林开落L5 小时前
从零开始学习Protobuf(C++实战版)
开发语言·c++·学习·protobuffer·结构化数据序列化机制
在路上看风景5 小时前
4.6 显存和缓存
unity
哎呦 你干嘛~5 小时前
MODBUS协议学习
学习
小陈phd5 小时前
多模态大模型学习笔记(一)——机器学习入门:监督/无监督学习核心任务全解析
笔记·学习·机器学习
小陈phd6 小时前
多模态大模型学习笔记(二)——机器学习十大经典算法:一张表看懂分类 / 回归 / 聚类 / 降维
学习·算法·机器学习
学编程的闹钟6 小时前
95【给图片添加跳转链接】
学习
EnglishJun6 小时前
Linux系统编程(二)---学习Linux系统函数
linux·运维·学习
im_AMBER6 小时前
Leetcode 115 分割链表 | 随机链表的复制
数据结构·学习·算法·leetcode