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

【unity】(1)场景

Unity的场景(Scene)是构建游戏中各种环境和级别的基础。一个场景可以包含游戏中的所有对象,如角色、道具、地形等。

创建和管理场景

  1. 创建新场景

    • 在Unity编辑器中,选择File > New Scene,或者使用快捷键Ctrl+N(Windows)或Cmd+N(Mac)。
    • 你可以选择创建一个空场景或使用预设配置(如2D、3D、VR等)。
  2. 保存场景

    • 保存新创建的场景通过File > Save Scene,或者Ctrl+S(Windows)或Cmd+S(Mac)。
    • 命名场景,并选择合适的文件夹保存。
  3. 加载场景

    • 在Unity中,可以通过File > Open Scene打开已存在的场景,或者使用Ctrl+O(Windows)或Cmd+O(Mac)。

场景视图和导航

  • 场景视图:场景视图(Scene View)是Unity编辑器中用于查看和编辑当前场景的工作区域。
  • 导航
    • 平移(Pan):按住鼠标中键并移动鼠标。
    • 旋转(Orbit):按住Alt键和左键并移动鼠标。
    • 缩放:使用鼠标滚轮或按住Alt键和右键并移动鼠标。

场景层次结构

  • 层次结构视图(Hierarchy):显示当前场景中所有游戏对象的树状列表。你可以通过这个视图来选择、排列和管理对象。
  • 父子关系:通过拖放一种游戏对象到另一种上,可以创建一个父子关系。这对于创建组织有序的场景结构非常有用。

场景发布

  • 构建设置(Build Settings):通过File > Build Settings配置游戏的发布设置。这里你可以添加需要包含在游戏构建中的场景。

代码控制

Unity使用SceneManager类来管理场景的加载、卸载以及查询。要使用场景管理功能,需要引入命名空间:

using UnityEngine.SceneManagement;

同步加载场景

同步加载会在加载新场景时阻塞游戏的运行。这是最基本的加载方式,但在加载大型场景时可能导致游戏短暂卡顿。

SceneManager.LoadScene("SceneName");

异步加载场景

异步加载可以在后台加载场景,这样游戏就不会在加载过程中冻结。这对于提升用户体验非常有用。

IEnumerator LoadYourAsyncScene(string sceneName)
{AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName);// 等待加载完成while (!asyncLoad.isDone){yield return null;}
}

设置物体延时加载

在某些情况下,你可能希望场景中的某些物体不是立即加载,而是在特定条件满足后才加载。这可以通过在场景加载后动态加载资源来实现。

  1. 预制体:首先,将需要延时加载的物体制作成预制体(Prefab)。

  2. 脚本控制加载:编写脚本来在运行时实例化这些预制体。

public GameObject prefabToLoad; // 指向你的预制体void Start()
{// 可以在这里调用LoadObject(),或根据需要在其他地方调用
}void LoadObject()
{Instantiate(prefabToLoad, new Vector3(0, 0, 0), Quaternion.identity);
}

场景加载优化技巧

  1. 使用异步加载:使用SceneManager.LoadSceneAsync来避免加载大型场景时的卡顿。
  2. 分离场景:将游戏分成多个小场景,通过SceneManager.LoadSceneAsyncLoadSceneMode.Additive选项逐渐加载,可以实现无缝场景转换。
  3. 延迟加载非关键资源:对于非立即需要的资源,可以在场景加载完成后,根据游戏进度或玩家行为动态加载。
  4. 使用加载画面:在场景加载期间显示一个加载画面,提升用户体验。
http://www.lryc.cn/news/342423.html

相关文章:

  • 【Linux】进程间通信IPC机制
  • 【如此简单!数据库入门系列】之效率基石 -- 磁盘空间管理
  • 专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(五)
  • 5月7日监控二叉树+斐波那契数
  • C++类的设计编程示例
  • YOLOv5 V7.0 - rknn模型的验证 输出精度(P)、召回率(R)、mAP50、mAP50-95
  • CUDA、CUDNN、Pytorch三者之间的关系
  • vue-cli2,vue-cli3,vite 生产环境去掉console.log
  • Docker-Compose编排LNMP并部署WordPress
  • 附录C:招聘流程
  • 1688快速获取整店铺列表 采集接口php Python
  • CTF-WEB(MISC)
  • Ubuntu如何更换 PyTorch 版本
  • python flask css样式无效
  • 大数据学习笔记14-Hive基础2
  • vue3 下载图片(包括多图片下载)
  • LabVIEW如何通过子VI更改主VI控件属性?
  • 关于MS-DOS时代的回忆
  • 数据库索引(Mysql)
  • 异常-Exception
  • ctfshow——SQL注入
  • 第十三章 计算机网络
  • 商品详情 API 返回值说明
  • 层级实例化静态网格体组件:开启大量模型处理之门
  • 【网络知识】光猫、路由器 和 交换机 的作用和区别?
  • 初识Electron,创建桌面应用
  • AI编码时代到来?实现编程梦想的利器—Baidu Comate测评
  • 去中心化自治组织(DAO)
  • MySQL之多表查询
  • 极端天气频发,我们普通人如何保全自己