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

Unity3D仿星露谷物语开发2之工程初始化

1、依赖包安装

进入【Window -> Package Manager】

安装如下插件:

1)Cinemachine

它是一套专门控制Unity Camera的模块,适用于各种游戏场景中物体的移动变化,解决了许多关于摄像机间的复杂控制,混合,切换等复杂数学和逻辑。对一些摄像机功能需求能快速实现,同时能结合Timeline插件来实现动画效果。

2)Timeline插件

默认情况下已经安装完毕。

它用于制作电影内容、过场动画、游戏过程序列以及复杂的粒子系统等。

2、自定义包

(1)导入自定义包

资源名称为:starterassets.unitypackage,这里面包含了Sprite、声音、动画、动画控制器等。

链接:https://download.csdn.net/download/benben044/90117305?spm=1001.2014.3001.5501

方法:【Assets -> Import Package -> CustomPackage...】

导入All,完成后Assets显示如下:

(2)Sprite Atlas图集

Sprite Atlas是一个包含多个小图像的大图像,这些小图像被称为sprites。通过使用Sprite Atlas,可以将多个小图像合并到一张大图像中。在渲染中,每次调用都需要进行顶点转换、纹理采样等操作。通过将多个sprites共享同一个纹理,unity可以减少纹理切换的次数,从而减少DrawCall的次数和内存占用,达到提高游戏的性能和效率的目的。

3、项目工程设置

进入【Edit -> Project Settings】

(1)Quality设置

在这个游戏中我们只要Low质量即可。

保留Low,将其他都删除掉:

(2)Graphics设置

我们需要设置透明排序模式。

在3D游戏中,事物是沿着Z轴排列的,这让它们在2D游戏中呈现出深度。在2D中没有使用Z轴,所以屏幕上的一切都是平面的。

我们通过沿Y轴排序来展示2D游戏的深度。

这意味着Y位置较低的Sprite将被排序并绘制在Y位置更好的Sprite前面。

4、初始化Scene

点击【File -> Save As】,将当前场景保存为PersistentScene,同时删除自带的SampleScene。

在游戏中将使用持久场景的概念。一个持久的场景会一直加载,游戏的不同位置也会一直加载。

即使用户角色在不同场景中切换,但是该持久场景会一直保持加载,所有的游戏管理器和主游戏逻辑将在持久化场景中创建。

5、创建虚拟cinemachine camera

点击【GameObject -> Cinemachine -> Virtual Camera】

创建完毕后就可以在PersistentScene中看到该相机。

我们将它重命名为:PlayerFollowVirtualCamera

接下来是改变摄像机的正投影尺寸。

我们将正交投影大小设为8.4375,刚好是屏幕大小16.875的一半。

我们基本Sprite分辨率是16像素/单位,所以我们的目标屏幕高度16.875*16=270像素,按照16:9的宽高比,则宽度为270*16/9=480像素。

Body类型选择“Framing Transposer”。

这基本上会保持游戏对象在一个帧内。其他参数配置如下:

设置Aim为Do nothing。

6、Main Camera设置

将背景设置为纯黑色(0,0,0)。

添加Pixel Perfect Camera组件。

参数配置如下:

Sprite以每单位16像素绘制,所以需要将Assets Pixels Per Unit改为16.

7、设置Snap Settings

点击如下位置:

参数设置如下:

0.0625 = 1/ 16.

http://www.lryc.cn/news/505576.html

相关文章:

  • Kafka篇之参数优化进而提高kafka集群性能
  • 关于SAP Router连接不稳定的改良
  • 使用pygame做游戏(2):2048游戏的进一步改造,以失败告终
  • 【CSS in Depth 2 精译_078】12.6 调整字间距,提升可读性 + 12.7 本章小结
  • 泷羽sec学习打卡-brupsuite7搭建IP炮台
  • 使用Svelte构建轻量级应用详解
  • Qt设置部件的阴影效果
  • Python 助力 DBA:高效批量管理数据库服务器的多线程解决方案-多库查询汇总工具实现
  • vue响应式数据-修改对象的属性值,视图不更新
  • 【OpenCV计算机视觉】图像处理——平滑
  • C#编程报错- “ComboBox”是“...ComboBox”和“...ComboBox”之间的不明确的引用
  • JAVA:访问者模式(Visitor Pattern)的技术指南
  • YashanDB共享集群产品能力观测:细节足见功底
  • 【Linux】—简单实现一个shell(myshell)
  • @FeignClient用于Nacos微服务间的接口调用
  • 认识javascript中的模块化
  • 容器设计模式:Sidecar
  • ensp 静态路由配置
  • MATLAB图卷积神经网络GCN处理分子数据集节点分类研究
  • Android-Glide详解
  • 2.Nuxt学习 组件使用和路由跳转相关
  • 代码开发相关操作
  • 动态导出word文件支持转pdf
  • 登陆harbor发现证书是错误的, 那么如何更新harbor的证书呢
  • 【Leetcode Top 100】199. 二叉树的右视图
  • React自学:如何使用localStorage,以及如何实现删除笔记操作
  • go语言使用websocket发送一条消息A,持续接收返回的消息
  • 如何对小型固定翼无人机进行最优的路径跟随控制?
  • C++常见面试题-初级2
  • Spring Security 6 系列之二 - 基于数据库的用户认证和认证原理