在跟着麦扣学习随机房间生成的过程中,其中墙壁的生成是通过switch来写的,但是这样写代码不方便维护和阅读

switch (room.doorOpenNumber){case 1:if (room.IsDoorTop){Instantiate(wallType.Wall_U, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorDown){Instantiate(wallType.Wall_D, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorLeft){Instantiate(wallType.Wall_L, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorRight){Instantiate(wallType.Wall_R, room.gameObject.transform.position, Quaternion.identity);}break;case 2:if (room.IsDoorTop && room.IsDoorDown){Instantiate(wallType.Wall_UD, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorTop && room.IsDoorLeft){Instantiate(wallType.Wall_UL, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorTop && room.IsDoorRight){Instantiate(wallType.Wall_UR, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorLeft && room.IsDoorRight){Instantiate(wallType.Wall_LR, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorLeft && room.IsDoorDown){Instantiate(wallType.Wall_DL, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorLeft && room.IsDoorRight){Instantiate(wallType.Wall_LR, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorDown && room.IsDoorRight){Instantiate(wallType.Wall_DR, room.gameObject.transform.position, Quaternion.identity);}break;case 3:if (room.IsDoorTop && room.IsDoorDown && room.IsDoorLeft){Instantiate(wallType.Wall_UDL, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorTop && room.IsDoorDown && room.IsDoorRight){Instantiate(wallType.Wall_UDR, room.gameObject.transform.position, Quaternion.identity);}if (room.IsDoorTop&&room.IsDoorLeft&&room.IsDoorRight){Instantiate(wallType.Wall_ULR,room.gameObject.transform.position,Quaternion.identity);}if (room.IsDoorDown&&room.IsDoorLeft&&room.IsDoorRight){Instantiate(wallType.Wall_DLR,room.gameObject.transform.position,Quaternion.identity);}break;case 4:if (room.IsDoorDown&&room.IsDoorLeft&&room.IsDoorRight&&room.IsDoorTop){Instantiate(wallType.Wall_UDLR,room.gameObject.transform.position,Quaternion.identity);}break;}

改用动态加载对象

  string  wallpath = "RoughLikeRoom/prefab/Wall/" ;Object Wall = Resources.Load(wallpath + GetWallType(room.IsDoorTop, room.IsDoorDown, room.IsDoorLeft, room.IsDoorRight));Instantiate(Wall, room.gameObject.transform.position, Quaternion.identity);
    /// <summary>/// 通过判断房间四个bool来判断墙体类型/// </summary>/// <param name="IsDoorTop">房间top是否有门</param>/// <param name="IsDoorDown">房间down是否有门</param>/// <param name="IsDoorLeft">房间left是否有门</param>/// <param name="IsDoorRight">房间right是否有门</param>/// <returns>WallPrefabName</returns>public string GetWallType(bool IsDoorTop, bool IsDoorDown, bool IsDoorLeft, bool IsDoorRight){string WallPrefabName = "Wall_";if (IsDoorTop)WallPrefabName += "U";if (IsDoorDown)WallPrefabName += "D";if (IsDoorLeft)WallPrefabName += "L";if (IsDoorRight)WallPrefabName += "R";//        Debug.Log(WallPrefabName);return WallPrefabName;}

这样可以让代码通过返回的四个门的bool来判断生成哪一个prefab。
但是注意的是使用Resources.Load加载的对象必须在你想要加载的文件必须放在Resources目录下才行!并且开始Resources下级文件夹写

读取文件时的根目录是 Assets/Resources,所有资源文件都放在该文件夹下,命令中的路径从 Resources 文件夹里开始写。
用 / 表示子文件夹。

【Unity】M_studio-随机RoughLike项目优化:动态代码生成对象相关推荐

  1. 【Unity项目优化宝典】Unity3d打包后移动端启动黑屏时间太久

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群,行业纵横颇多,每个人精通领域各异,旨在交流, .公司性质使然,经手很多小项目.在美术资源少,代码框架简单的情况下一般不会考虑到 ...

  2. Unity项目优化详解(持续补充ing)

    Unity开发项目总结的几项优化点,比较适合中小项目优化,拿来即用,大型项目需要考虑定制化渲染管线.剔除.光照等.针对优化更多的还是需要结合项目去考虑. 一.模型 Read/Write:同Textur ...

  3. 学习【瑞吉外卖⑪】SpringBoot单体项目_项目优化

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 本人写这篇博客旨在制作学习笔记,巩固知识.同时方便个人在线阅览,回顾知识. 这篇博客中主要对应[瑞吉外卖项 ...

  4. Unity移动端游戏性能优化简谱之 以引擎模块为划分的CPU耗时调优

    <Unity移动端游戏性能优化简谱>从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能 ...

  5. Unity移动端游戏性能优化简谱之 常见游戏内存控制

    <Unity移动端游戏性能优化简谱>从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能 ...

  6. 深入浅出聊Unity3D项目优化:从Draw Calls到GC (难度2 推荐5)

    原文出处: 慕容小匹夫的博客(@慕容小匹夫) 前言: 刚开始写这篇文章的时候选了一个很土的题目...<Unity3D优化全解析>.因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实, ...

  7. unity VR游戏帧数优化(二)

    这篇主要摘录了unity官网上对于VR项目优化相关的帖子,读罢受益良多,也应用到了自己的项目里.这里记录留作日后学习参考. 由于在目标平台上达到帧率要求是保证玩家获得良好VR体验,同时避免眩晕的重要措 ...

  8. 老司机谈APK瘦身套路-项目优化篇

    老司机谈APK瘦身套路-项目优化篇 在上一篇文章中,老司机带领大家一起学习了图片资源的瘦身套路,收到了很多中学生读者的好评. 想了解的童鞋请点击:blog.csdn.net/mynameishua-  ...

  9. IoC组件Unity再续~根据类型字符串动态生产对象

    回到目录 这个根据类型字符串动态去生产一个接口的对象,在实现项目中用途很广,这即省去了配置config文件的麻烦,又使用生产对象变更可配置,你完全可以把这种多态持久化到数据库里或者XML文件里,在使用 ...

最新文章

  1. 链接静态库的顺序问题
  2. 软件技术支持职责和能力要求(偏软件方向)
  3. _LVM——让Linux磁盘空间的弹性管理
  4. 李迟2021年10月知识总结
  5. 【Kafka】Mac 环境 Kafka诡异问题之kafka eagle 界面无法访问
  6. 10.12.1 安装cocoapods及使用详解
  7. css学习----边框属性
  8. 2013年1月第1个周末
  9. 软件设计是怎样炼成的(3)——软件系统不是木桶型的
  10. 日常排版--word中的一些小技巧(交叉引用)
  11. 题目 1842: 对局匹配
  12. Android 画笔功能
  13. Google Dapper,大规模分布式系统的跟踪系统
  14. Objective-C类别(catagory)
  15. 数据结构(C语言版)——顺序栈(代码版)
  16. Netty + Web聊天室
  17. UE4入门序列07(Unreal网络编程之Replication Roles)
  18. 广东教国笔怎样才能提高自制力!
  19. PHP中in_array 效率及其优化
  20. 多无人机辅助移动边缘计算中的任务卸载和轨迹优化

热门文章

  1. 制作Android开机动画 bootanimation.zip
  2. A091_hrm07_用户中心_注册
  3. ARDS患者如何进行肺复张
  4. 利用python语言实现多张图像拼接
  5. 微信小程序商城项目实战(第十篇:订单管理)
  6. Res2Net: 一种新的多尺度主干体系结构(Res2Net: A New Multi-scale Backbone Architecture )
  7. 海康设备对接sdk错误码汇总 v6.0
  8. 借助这个宝藏神器,我成为全栈了
  9. 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)
  10. 使用mediasoup-demo搭建多人音视频聊天室