当前位置: 首页 > ops >正文

【Unity开发】Unity核心学习(一)

一、2D相关

在这里插入图片描述

1、图片导入相关设置

(1)Unity支持的图片格式

支持BMP、TIF、JPG、PNG、TGA、PSD
常用格式具体介绍:
JPG:指JPGE格式,属于有损压缩格式,无透明通道
PNG:无损压缩格式,有透明通道
TGA:支持压缩,使用不失真的压缩算法,体积小、效果清晰,有透明通道

(2)图片设置的6大部分

在这里插入图片描述
①纹理类型
在这里插入图片描述
Default:默认纹理,大部分导入的模型贴图都是该类型
在这里插入图片描述
Normal map:法线贴图格式
在这里插入图片描述Editor GUI and Legacy GUI:一般在编辑器中或者GUI上使用的纹理
Sprite(2D and UI):2D游戏或者UGUI中使用的格式
在这里插入图片描述
Cursor:自定义光标
Cookie:光源剪影格式
在这里插入图片描述Lightmap:光照贴图格式
Single Channel:纹理只需要单通道的格式
在这里插入图片描述
②纹理形状
在这里插入图片描述
③高级设置
在这里插入图片描述
MipMap:开启MipMap功能后,Unity会帮助我们根据图片信息生成n张不同分辨率的图片,在场景中会根据我们离该模型的距离选择合适尺寸的图片用于渲染,提升渲染效率。
④平铺拉伸
在这里插入图片描述
⑤平台设置
在这里插入图片描述
Max Size:设置导入的纹理的最大尺寸,即使美术出的很大的图,也可以通过这里把它们限制在一定范围内
Resize Algorithm:当纹理尺寸大于指定的Max Size时,使用的缩小算法
在这里插入图片描述
Format:纹理格式,各平台支持的格式有所不同,如果选择Automatic,会根据平台使用默认设置
Compression:选择纹理的压缩类型,帮助Unity正确选择压缩格式会根据平台和压缩格式的可用性进行压缩
在这里插入图片描述
Use Crunch Compression:启用后,使用Crunch压缩。Crunch是一种基于DXT或ETC纹理压缩的有损压缩格式。压缩时间长,解压速度快。
在这里插入图片描述
在这里插入图片描述
Split Alpha Channel:Alpha通道分离,节约内存。会把一张图分成两张纹理。一张包含RGB数据,一张包含Alpha数据,在渲染时再合并渲染。
Override ETC2 fallback:不支持ETC2压缩的设备上,使用的格式
⑥图片预览窗口

2、Sprite

(1)SpriteEditor

(i)Single图片编辑

在这里插入图片描述

(ii)Multiple图集元素分割

在这里插入图片描述

(iii)Polygon多边形编辑

用于多边形的图片,较少使用

(2)SpriteRender

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)Sprite Creator

介绍:Sprite Creator主要的作用是创造出各种多边形,替代暂未完成的美术资源,先做好功能逻辑,等美术资源完成后直接进行替代即可。
使用:直接在Assets右键选择Sprites进行不同多边形的创建。

(4)Sprite Mask(只显示图片的部分内容)

在这里插入图片描述

(5)Sorting Group

介绍:SortingGroup是排序分组的意思,主要作用是对多个精灵图片进行分组排序,Unity会将同一个排序组中的精灵图片一起排序,类似于单个游戏对象,主要作用是对于需要分层的2D游戏用于整体排序。
使用:直接添加对应组件
在这里插入图片描述

(6)Sprite Atlas 精灵图集制作

(i)开启打图集

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码加载打图集后中的某个sprite

        GameObject gameObject = new GameObject();SpriteRenderer sprite = gameObject.AddComponent<SpriteRenderer>();//加载图集SpriteAtlas spriteAtlas = Resources.Load<SpriteAtlas>("MySpriteAtlas");//加载图集中的图片sprite.sprite = spriteAtlas.GetSprite("sprite1");

注意点:通过图集中的图片如果穿插使用,可能会增加drawcall次数

3、2D物理系统

(1)刚体

(i)组件参数介绍

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(ii)刚体类型选择

Dynamic:受力的作用,要动要碰撞的对象
Kinematic:通过刚体api移动的对象,不受力的作用,但是要进行碰撞检测
Static:不动不受力的作用,但是要进行碰撞检测

(iii)刚体api调用
Rigidbody2D rigid=this.GetComponent<Rigidbody2D>();
//加力
rigid.AddForce(new Vector2(0,100));
//速度
rigid.velocity=new Vect2(1,0);

(2)碰撞器

(i)六大碰撞器类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)物理材质

(i)介绍

物理材质是用于决定在物体产生碰撞时这些物体之间的摩擦和弹性表现的,通过物理材质我们可以做出类似斜坡不滑落,小球反弹等效果

(ii)相关参数

在这里插入图片描述

(4)恒定力

(i)介绍

恒定力是一个特殊的脚本,可以给一个2D刚体持续添加一个力,在做一些随着时间推移而加速的对象时很适用,例如火箭发射效果等,恒定力脚本会线性的为对象添加力和扭矩力 让其移动和旋转。

(ii)相关参数

在这里插入图片描述

(5)效应器

(i)介绍

2D效应器是配合2D碰撞器一起使用
可以让游戏对象在相互接触时产生一些特殊的物理作用
通过2D效应器可以快捷实现:传送 互斥 吸引 漂浮 单项碰撞等效果

(ii)不同种类2D效应器的使用

区域效应器:
在这里插入图片描述
浮力效应器:
在这里插入图片描述
点效应器:
在这里插入图片描述
平台效应器:
在这里插入图片描述
表面效应器:
在这里插入图片描述

4、SpriteShape

(1)作用

以节约美术资源为前提,制作2D游戏场景地形或背景
在PackageManger中可以导入包以及一些示例

(2)Sprite Shape Profile概述文件参数

在这里插入图片描述

(3)Sprite Shape Renderer 精灵形状渲染器

在这里插入图片描述
在这里插入图片描述

(4)Sprite Shape Controller 精灵形状控制器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)生成碰撞器

(i)使用边界碰撞器,根据形状自动生成(推荐)

在这里插入图片描述

(ii)使用多边形碰撞器配合复合碰撞器

在这里插入图片描述

5、Tilemap 瓦片地图

(1)介绍

作用:用于快速编辑2D游戏中的场景,复用资源提升地图多样性
工作原理:用小图排列组合为一张大地图
与SpriteShape的异同:
共同点:用于制作2D场景或地图
不同点:SpriteShape可以让地图有弧度,Tilemap不行;Tilemap可以快捷制作有伪“z”轴的地图,SpriteShape不行
使用方式:通过Package Manger安装使用

(2)创建瓦片资源

在这里插入图片描述

(3)瓦片调色板窗口使用

(i)创建相关参数

在这里插入图片描述

(ii)操作技巧

在这里插入图片描述

(iii)面板相关

在这里插入图片描述
在这里插入图片描述

(iv)不同类型瓦片使用总结

矩形瓦片:适用于横版游戏地图
六边形瓦片:适用于策略游戏地图
等距瓦片:适用于做有“z”轴的2D游戏(理解不够完全)

(4)瓦片地图关键脚本介绍和碰撞器了解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)官方扩展包使用

(i)介绍

扩展包下载地址:https://github.com/Unity-Technologies/2d-extras
扩展包作用:添加新的瓦片类型和笔刷类型,更加方便编辑2D场景

(ii)新增瓦片类型

规则瓦片:
在这里插入图片描述
动画瓦片:
在这里插入图片描述
管道瓦片:
在这里插入图片描述
随机瓦片:
在这里插入图片描述
地形瓦片:
在这里插入图片描述

(iii)新增笔刷类型

新建自定义预设笔刷
在这里插入图片描述
扩展画笔
在这里插入图片描述

(6)代码控制相关

(i)获取Tilemap和TileBase和Grid

在这里插入图片描述

(ii)重要api

在这里插入图片描述

http://www.xdnf.cn/news/17646.html

相关文章:

  • 如何在 Ubuntu 24.04 LTS Noble Linux 上安装 FileZilla Server
  • MyBatis 中 XML 与 DAO 接口的位置关系及扫描机制详解
  • react与vue的对比,来实现标签内部类似v-for循环,v-if等功能
  • 万字详解C++11列表初始化与移动语义
  • 如何把ubuntu 22.04下安装的mysql 8 的 数据目录迁移到另一个磁盘目录
  • 基于深度学习的苹果品质智能检测算法研究
  • Kubernetes(K8S)中,kubectl describe node与kubectl top pod命令显示POD资源的核心区别
  • .net\c#web、小程序、安卓开发之基于asp.net家用汽车销售管理系统的设计与实现
  • Android Activity 的对话框(Dialog)样式
  • LaTeX(排版系统)Texlive(环境)Vscode(编辑器)环境配置与安装
  • PostgreSQL——索引
  • SpringBoot工程妙用:不启动容器也能享受Fat Jar的便利
  • Redis:是什么、能做什么?
  • 第十三节:后期处理:效果增强
  • MySQL优化常用的几个方法
  • 使用 Python Selenium 和 Requests 实现歌曲网站批量下载实战
  • 100、【OS】【Nuttx】【构建】cmake 配置保存
  • 文心4.5专家负载均衡机制深度解析
  • 【Virtual Globe 渲染技术笔记】4 椭球面上的曲线
  • 线上Linux服务器被植入各种病毒的详细分析、处理、加固流程
  • 机器学习之TF-IDF文本关键词提取
  • EP1S20F484C6 Altera Stratix FPGA
  • imx6ull-驱动开发篇19——linux信号量实验
  • 鸿蒙开发资源导航与学习建议
  • 如何解决Unexpected token ‘<’, “<!doctype “… is not valid JSON 报错问题
  • 微服务ETCD服务注册和发现
  • LeetCode 2787.将一个数字表示成幂的和的方案数:经典01背包
  • Airtable 入门指南:从创建项目到基础数据分析与可视化
  • 渗透测试现已成为 CISO 战略的核心
  • 开疆智能Ethernet转ModbusTCP网关连接PAC3200电能表配置案例