Unity2D Notes

本文档提供了Unity 2D游戏开发中的实用技巧,包括快捷键使用、音效处理、碰撞检测、UI设计、角色动画及优化等内容,并介绍了如何利用Unity特性提升游戏体验。

快捷键

Q W E R T : to select tools , which help you better adjust your items

音效

Get and use audio from the Internet

asset store -> audio-> free -> DOWNLOAD sound fx - retro pack && Casual Game BGM
-> install your audio packages -> player->(component)audio source -> uncheck Play on awake -> add your audio to AudioClip ->check Loop

add death audio to each enemy

uncheck (play on awake)
open class enemy->get component of gameObject audio
audio.play();

add jump/hurt or other audios to your player

New a variable, which type is AudioSource, get componet , and then add audio.play() to the function you want .

SoundManager: simplify your component

create a script -> create a emptyObject -> drag your script to it -> add a audio source -> edit your script :

public AudioSource audioSource
//then drag AudioSource component to your script's vavariable on inspector
public AudioClip Jump,hurt,cherry 
//then drag mp3 file to these AudioClip 
public void JumpAudio(){
audioSource.Clip = Jump;
audioSource.play();
}

处理 TileSet

1.  tileset->inspector:
	SpritMode = Multiple
2.  tileset->inspector->sprite Editor:
	Slice->PixelSize:
		X=Y = 16
3.Create 2D Object.TileMap.Rectangular	
4.Create new TilePalette
5.Drag your tileSet into the created TilePalette
6. Uncheck choice---Flood Fill Contiguous Only
7.Choose Paint-brush
8. choose the object you want
9.Paint it to the Scene. 

One Way Platform: player can jump to the platform from below

Create a 2D.tilemap ->change sorting layer to ground -> draw a platform -> add a tilemap collider,check USED BY EFFECTOR -> add component : Platform Effector 2D:check Use One Way && USE COLLIDER MASK

Add collide /增添碰撞

Add TileMap collide to your tileMap

UI层:

快捷键: ctrl +f 编辑界面

Dialog that shows you words

show Dialog when collision happened

Canvas -> ui -> panel -> set transparency -> set anchor and translation
right click panel -> text -> adjust position -> download free pixel font on the asset store.
->
add a collider on the gameobject that you want,
->
using collision to write your code:
class : onCollisionEnter2D , gameobject.SetActive
->

set gradient effect to your EnterDialog:

Create a new animation called EnterDialog ,add it to specific gameobject,
and back to your animation interface ,click red button to record -> change color -> add new frame , -> set color -> stop recording -> save -> END

图层:

Inspector->Sorting Layer & Order in layer
Sorting layer : the item position higher ,the level is lower
Order in layer : higher number means higher level in the same layer

角色:

UI

LifeBar

Canvas ->create empty in Canvas called Health bar -> create Image called border under Health bar -> drag bar.png into it -> border.Inspector : set native site, anchor : click lower right corner image without press Alt -> create image called Fill -> Fill.anchor : alt + click lower right corner (to let image scale to border)
-> health bar.Inspector : add component called slider uncheck everything. set none to every property, drag image-Fill to property : fill rect , -> add a image called heart ->

Edit your code to adjust the value of your lifeValue :

 class HealthBar : Mono...{
 public Slider slider ; // get health bar's slider
	public void SetMaxHealth(float Max){}
	public void GetDamage(float Damage){
	slider.Value -=Damage;
	} 
}

now you can declare class HealthBar at any Script and use it .

设置角色:

设置重力&碰撞:

Set Gravity :

Inspector -> Add Component -> Rigid Body 2D -> grivity scale

Set Collide :

add componet ->add shape collide to your player -> edit collider (to adjust collider’s boundary)

Script

jump twice

use a int variable to count jump-times

获取组件信息

xx = GetComponent<T>();

Move/角色移动:

Input.GetAxis("");
Input.GetAxisRaw("");

Crouch/crawl

Movement:Crouch
code:
Crouch()->

deal with the situation that player can’t stand if there is collider on its head:
!Physics2D.OverlapCircle(Point,radius,ground);

拾取物品:

添加Sprite, 为Sprite 设置动画,画面

1.添加Collider 2D , 选择 Is trigger
2.为物件设置tag = Collections
3.为角色增添代码:

public void OnTriggerEnter2D(Collider2D collision){
	if(collision.tag == "Collections")
	{
	Destroy(collision.gameObject);
	}	
}

碰撞敌人,击杀

使用OnCollisionEnter2D()
代码中获取碰撞体信息

collision.gameObject.transform.position

使用位置信息来处理玩家角色行为

碰撞后播放动画再死亡

添加Animation Event即可

角色细节优化:

增加运动流畅度

选择圆形碰撞体,防止磕石头

镜头

使用更智能的镜头替代默认镜头:CinemaMachine

Window->package manager -> cinemaMachine

设置镜头边界:

背景:增添 Collide 2D , 勾选 Is Trigger
镜头: 增添 Camera Confiner ->Set Bounding Shape 2D to
background

Add Lighting effect to your Scene

make things dark

make the tilemap and other objects black
tilemap -> tilemap renderer -> material -> diffuse
Make Object or Player dark :
create a material -> set shader from standard to ui.diffuse -> drag this material to your gameObject.

NOTE: if you use this method to add diffuse to your gameObject, it will disappear sometimes.

add lighting

light -> Point Light
light -> Directional Light
you can change the number of y to adjust its brightness.

Parallax

Pack your background
Create a new Script

Variable : camera , StartPointX,StartPointY,MoveRate

translation.position = new Vector2(StartPointX + camera.position.x*MoveRate,camera.position.y);

drag your scipt to your gameObject
adjust MoveRate , generally, the closer the background is,the lower of the moverate will be.

MainMenu

to realize play and quit

Create a new Scene called Menu -> new a canvas -> new a panel called BG in Canvas -> change source image of panel 1 -> new panel called MainMenu , change its color -> right click MainMenu -> ui.Button >> - TextMeshPro - > change text to play , quit

New a Script

SceneManager.LoadScene(SceneManager.GetActiveS>>cene().buildIndex+1);
Application.Quit(); 

Drag it to MainMenu
add your script to your button’s Onclick component ,

Realize gredient color and then text appears

Pack your text
add animation to your MainCamera panel
unclick loop
add event, which is letting text appear , to the end of your animation

Realize pause:

add a ui.button(you can add panel and set its color to make the scene more beautiful) ->
In your code:

Time.timescale = 0f; // pause game ;
Time.timescale = 1f; // continue game ;

Use slide bar to change your game’s audio

create a new slider on proper position -> create a Audio Mixer in file Assets -> Windows.Audio.Audio Mixer ->
choose any component called audio source -> output -> choose an Audio Mixer -> back to slider ,change max and min value to the same value of Audio Mixer

make audioMixer’s volume modifiable

AudioMixer -> Right click Inspector.Attenuation.Volume ,then choose Expose -> click Exposed parameters -> change its name if necessary

Code in your script :

using UnityEngine.Audio

public AudioMixer audioMixer
// then drag created audioMixer to AudioMixer's value on inspector 

public void SetVolume(float value){
audioMixer.SetFloat("VOLUMENAME",value);
}

choose slider -> add this function to OnValueChange(single) -> choose function in Dynamic float

跨关卡操作:

保留每个关卡/场景的数据:

Assets下创建文件夹prefebs,将需要保存数据的物件拖拽到文件夹内.	

EveryTime you add a component , remember to store the data in prefebs.

切换关卡

use SceneManager to change

add a empty object -> adjust its position on the botton of your background, stretch an object to the length of background -> add a collider
->

using UnityEngine.SceneManagement 

-> In function OnTriggerEnter2D() : (UNNECESSARY)

Scene.Manager.LoadScene(SceneManager.GetActiveScene().name);

Set Delay

use function : 
invoke("FUNCTION_NAME",(float)Time)

Close all audios when dead

GetComponent<AudioSource>().enabled = false;

Add Scenes
File -> Bulid Settings -> drag scenes to Scenes in build
-> In your Script :

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

疑问及其解答

为什么为物件添加了刚体之后,角色碰撞后消失的代码就无效了?

OnTriggerEnter2D不行,因为加了刚体角色就进不去物体内,无法触发Trigger.
改用OnCollisionEnter2D

如何在代码里实现 Animation Event?

不要用官方给的代码尝试在Script里实现Animation Event先,没有用。用设计器来实现即可

IsTrigger对Collider的影响

设置成IsTrigger后角色可以走进Collider的里边,它使用的函数是OnIsTriggeer等等

Small Tips

press ctrl+D to duplicate a scene

eliminate gap of tilemap

way1 :set grid’s x and y to 0.99
way2 :editor -> Project Settings… -> Quality -> Anti Aliasing -> Disable

Temp Notes

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值