2D模式和3D模式区别:背景纯色,摄像机2D,没有深度轴

精灵图片设置

Normal map,法线贴图,更有立体感
Sprite (2D and UI),2D精灵贴图,有两种用途
1、当做UI贴图
2、当做2D精灵直接作为游戏物体

Sprite Mode:精灵模式
Single:单图模式,一张2D精灵贴图
Multiple:多图模式,图集,切图,切成一张张小图,序列帧图片
Polygon:多边形模式
 
多图模式点精灵编辑器,切图

1、自动切,根据图片的Alpha透明通道,图片的轮廓
缺点:中心点不在同一位置,播放动画会发生偏移

2、宽高切,根据尺寸来切,每张图宽高都是XY
3、行列切,C列R行,一整张图分成C列R行

手动切,不建议,每次宽高不同
 
Sprite Renderer 2D精灵渲染器

Sprite:指定让精灵渲染器渲染哪张精灵图片,用代码可以做动画
Color:主颜色,向上叠加其他颜色,用代码可以做颜色切换
Filp:沿着X轴或者Y轴进行镜像旋转
Material:赋材质,一般是默认材质
Draw Mode:贴图模式
----Simple普通模式:
----Sliced切片模式:九宫格图片的贴图方式,四角不拉伸,其余拉伸
单图模式Sprite Mode - Single,平铺模式Wrap Mode - Clamp,报错修改Mush Type - Full Rect
----Tiled切割模式:拉伸复制,根据图片的原始大小重复贴图
--------Tile Mode:Continuous模式,Adaptive模式
------------Stretch Value:伐值,拉伸之后的压缩比例
Sliced切片模式:精灵图片九宫格切割,防止图片拉伸变形,四角不变,其余部位重复拉伸

Sorting Layer(排序层级):决定了多张精灵图片的渲染顺序,越靠下的层级越后渲染,后渲染的就会把先渲染的覆盖掉。(所以不需要调z轴的深度,2D也没有z轴深度,也可以两个深度,一个放背景,一个放物体,渲染顺序优于z轴深度)
Order Layer(int值):在同一层级(Sorting Layer)下,数值越大的越后渲染,后渲染的就会把先渲染的覆盖掉。
Sorting Layer > Order Layer
 
Flare耀斑,导入基础资源包 - effects - 50mmmzoom
2D精灵图片,导入基础资源包

Pixel Per Unit:1个单元格(1米)=200个像素
根据游戏分辨率和图片像素,在图片尺寸不变,按比例缩放图片在2D场景的大小
游戏物体移动:动画.cs和位移.cs分开编写,很少会用动画自带的位移,镜之边缘
游戏物体转身:推荐使用Scale缩放为-1,使用Flip镜像转身,如果中心点不在物体中心,会有问题
打包图集:

给切图打上标签

老版图集打包,选择Always Enabled:把同一标签的图片,全部挤在一张图片上,合理利用剩余空间

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. //简易动画状态机,面向对象的思想
  5. //枚举表示状态
  6. public enum PlayerState
  7. {
  8. Idle,
  9. Walk,
  10. }
  11. public class SpriteTest : MonoBehaviour
  12. {
  13. public Sprite[] idleSprites;
  14. public Sprite[] walkSprites;
  15. public float timeInterval = 0.1f;
  16. private SpriteRenderer spriteRenderer;
  17. private float curTime = ;
  18. private int curIndex = ;
  19. private float h;
  20. private PlayerState state = PlayerState.Idle;//枚举项附初值
  21. public PlayerState State//给枚举变量添加属性
  22. {
  23. get
  24. {
  25. return state;
  26. }
  27. set
  28. {
  29. if (state != value)//判断状态是否改变
  30. {
  31. curIndex = ;//如果改变,把数组下标curIndex清零
  32. state = value;//给状态赋新值
  33. }
  34. }
  35. }
  36. // Use this for initialization
  37. void Start()
  38. {
  39. spriteRenderer = GetComponent<SpriteRenderer>();
  40. }
  41. // Update is called once per frame
  42. void Update()
  43. {
  44. h = Input.GetAxisRaw("Horizontal");
  45. CheckState();
  46. }
  47. //根据轴值检测状态
  48. void CheckState()
  49. {
  50. if (h == )
  51. {
  52. State = PlayerState.Idle;
  53. }
  54. else
  55. {
  56. State = PlayerState.Walk;
  57. }
  58. ChooseState();
  59. }
  60. //根据状态传递数组
  61. void ChooseState()
  62. {
  63. switch (State)
  64. {
  65. case PlayerState.Idle:
  66. PlayAnimation(idleSprites);
  67. break;
  68. case PlayerState.Walk:
  69. PlayAnimation(walkSprites);
  70. break;
  71. }
  72. }
  73. //接收数组播放动画
  74. void PlayAnimation(Sprite[] sprites)
  75. {
  76. curTime += Time.deltaTime;
  77. if (curTime >= timeInterval)
  78. {
  79. curIndex++;
  80. curIndex %= sprites.Length;
  81. spriteRenderer.sprite = sprites[curIndex];
  82. curTime = ;
  83. }
  84. }
  85. }
 
2D中的物理系统
Physics 2D
2D物理是没有z深度的
----Collider 2D
--------Edge Collider 2D:边缘碰撞器,线体
--------Polygon Collider 2D:多边形碰撞器,闭环
----Rigidbody 2D
--------G重力缩放值,0为无重力
--------检测模式,连续监测
--------睡眠模式,永远不睡,清醒,一碰就醒
--------抖动修正
--------锁轴
2D物理的碰撞检测:
  1. private void OnCollisionEnter2D(Collision2D collision)
  2. {
  3.  
  4. }
  5. private void OnTriggerEnter2D(Collider2D collision)
  6. {
  7.  
  8. }
2D的射线:
Physics2D.Raycast();
int Raycast(Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results);
ContactFiter2D:筛选器,信息整合,返回值是RaycastHit2D,不是布尔值
往上跳,给2D刚体一个向上力
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PlayerMovementController : MonoBehaviour
  5. {
  6. public float moveSpeed = ;
  7. private float h;
  8. // Use this for initialization
  9. void Start () {
  10. }
  11.  
  12. // Update is called once per frame
  13. void Update ()
  14. {
  15. h = Input.GetAxisRaw("Horizontal");
  16. transform.Translate(Vector3.right * Time.deltaTime * h * moveSpeed);
  17. if (h != )//判断在移动时,转身
  18. {
  19. transform.localScale = new Vector3(h > ? : -, , );//用Scale=-1来转身
  20. }
  21. if (Input.GetKeyDown(KeyCode.Space))
  22. {
  23. GetComponent<Rigidbody2D>().AddForce(Vector2.up * , ForceMode2D.Impulse);//施加一个向上的力
  24. }
  25. }
  26. }
2D效应器,和碰撞器配合使用,让碰撞器具有相应效应
Platform Effector 2D:平台特效,上去不下来,加平台特效,可以调节角度
Buoyancy Effector 2D:浮力效应器
Area Effector 2D:区域效应器,模拟风吹
Point Effector 2D:点效应器
Surface Effector 2D:表面效应器

碰撞器需要勾选Is Trigger和Used By Effector,效应器才会有效果

Distance Joint 2D:模仿关节

弹簧关节:有重力,有弹簧的效果

和另一个有刚体的游戏物体相连,两个游戏物体之间有一个隐形的弹簧
如果不设置,则默认和世界相连

Unity3D学习笔记(十二):2D模式和异步资源加载的更多相关文章

  1. JavaScript学习笔记(十二) 回调模式(Callback Pattern)

    函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)intr ...

  2. python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL

    python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...

  3. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  4. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  5. Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关

    资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...

  6. Android 学习笔记之Volley(八)实现网络图片的数据加载

    PS:最后一篇关于Volley框架的博客... 学习内容: 1.使用ImageRequest.java实现网络图片加载 2.使用ImageLoader.java实现网络图片加载 3.使用NetWork ...

  7. Unity3D学习笔记(二十九):AssetBundle

    AssetBundle 什么是AssetBundle? AssetBundle是把一些资源文件或场景文件,以某种方式保存在一个文件中.一个AssetBundle可以包含模型.材质.图片或场景等.但是A ...

  8. Unity3D学习笔记(二十五):文件操作

    文件是什么? 存储在硬盘上的最后的节点. 文件夹是什么? 文件的上级单位称为文件夹. 文件夹的基本结构? 文件夹是层级化结构的,对于同级的文件夹不可以重名,父文件夹和子文件夹可以同名> IO:I ...

  9. Unity3D学习笔记(二十八):Editor

    Editor: 对编辑器进行一些拓展开发 关于继承Mono类的扩展开发   特性: [特性]:声明性的标签(类,方法,结构体,变量) 特性只对字段声明有效,后面必须接字段:多个特性,可以修饰一个字段 ...

随机推荐

  1. Java——文件操作字符流和字节流的区别

    转:http://blog.csdn.net/joephoenix/articles/2283165.aspx java的IO流分两种流 字节流 InputStream OutputStream 字符 ...

  2. qt——QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  3. python中执行shell命令行read结果

    +++++++++++++++++++++++++++++ python执行shell命令1 os.system 可以返回运行shell命令状态,同时会在终端输出运行结果 例如 ipython中运行如 ...

  4. 第十八篇:融汇贯通--谈USB Video Class驱动

    USB Video Class驱动是WINDOWS系统包含的一个针对于USB VIDEO 类的驱动程序. 好多project师都做过USB VIDEO设备端的开发, 基本的工作内容为: 使用FIRMW ...

  5. vue-页面回退

    <template> <div> <button @click="goback">我是Home01</button> </di ...

  6. matlab做曲线拟合

    python 做曲线拟合 https://blog.csdn.net/qq_16583687/article/details/72723708 matlab做拟合函数,可以在命令行输入:数据x,数据y ...

  7. Scala里面如何使用枚举

    枚举通常用来定义已知数量的常量,比如月份,星期,季节等等,用过java的人都知道定义枚举的关键字是enum,在scala里面和java有所不同,来看一个完整的例子定义: object EnumTest ...

  8. 2018-2019-2 网络对抗技术 20165324 Exp1:PC平台逆向破解

    2018-2019-2 网络对抗技术 20165324 Exp1:PC平台逆向破解 实验: 要求: 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 掌握反汇编与十六进制编 ...

  9. python selenium webdriver处理浏览器滚动条

    用键盘右下角的UP,DOWN按键来处理页面滚动条 这种方法很灵活用起来很方便!!!! from selenium import webdriver import time from selenium. ...

  10. POST—常见的4种提交方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中,POST 一般用来向服务端提交数据,本文 ...