Unity 小积累

**

Unity 学习小积累

**

1.FindObjectsOfType和FindObjectOfType

前者返回所有个体(集合)
后者返回第一个个体 (单个)

2.uinty打包问题

[图片]

打包webgl遇到了 实际上和py没有关系 c盘不够了 单纯

3.Unity 默认下载位置 坑

1.Unity会在运行中默认的向C盘的 user/appdata/local/unity 中 存储cash 文件 通常有个几个G的大小 当然因为是cash 所有删掉也没有关系 但是看看这个cash中的大部分 主要是package 包 项目加载时又会将需要的下载回来
[图片]

通过更改环境变量的方式 来修改这个cash的生成位置 默认是在C盘的
指路:https://blog.youkuaiyun.com/sy345414054/article/details/122305251
当然不想这么麻烦可以使用软链接的方式mklink j 将文件和其他盘的文件链接
了解更多软链接:https://blog.youkuaiyun.com/debrnr/article/details/124052103
(tips) 当然修改环境变量后要记得重启电脑,确保环境变量生效
2.如果你unity项目的光照渲染用的多 unity 会在 user/appdata/locallow/unity 中存储光照cash 静态光照贴图,探针。这个可以直接在unity中 的 preferences 中 GI Cache 选项中进行修改
[图片]

1.点上Custion cache location 后可以自定义一个文件夹用于存储此Cash 一劳永逸
2.点击Clean Cache 可以将此Cash 清空
了解更多 指路☞:https://blog.youkuaiyun.com/hongyaolee/article/details/103270793

3 修改unityhub中的设置
这个下载位置默认是在c盘的 编译器本身不大 但是模块一多就大起来了 说的就是你 android
这个看着改改吧 默认c盘也挺好的
[图片]

4.FindObjectOfType的坑 和相关的时序问题

FindobjectOfType方法 来取得的物体 脚本是新new 出来的 并不能实现一下数据的传递 并且这个个方法运行的速度是慢的 通常不建议使用 使用单例模式来代替
在关卡加载之前 就要通过这个方法来找到对象 这个ballbehaviour物体是在游戏场景中的 但是在进行动态加载之后 往往游戏场景还没有加载完成之前 这个方法就已经调用了 往往就找不到指定的物体 导致出错
[图片]

调整方法 将这段代码迁移到按钮作用的位置 获得 更好的将之等待到场景加载完成

### 小地图功能的实现 在 Unity 中创建和实现小地图功能可以通过多种方式完成,具体取决于项目的复杂性和性能需求。以下是几种常见的方法及其细节: #### 方法一:使用缩略图作为小地图背景 一种简单的方法是通过截图的方式获取整个场景的俯视图并将其用于小地图显示[^3]。这种方式适合小型场景,因为它不需要额外的相机来实时渲染。 - 首先,在编辑器中调整主摄像机到顶视角位置,拍摄一张完整的场景图片。 - 接着将这张图片放置于 UI 的 Image 组件上作为小地图背景。 这种方法的优点在于其较低的计算开销,缺点则是无法动态更新场景变化。 #### 方法二:利用 RenderTexture 实现实时渲染的小地图 为了提供更灵活且动态的效果,可以采用 `RenderTexture` 来实现实时渲染的小地图。 - 创建一个新的 Camera 对象专门负责捕捉顶视角的画面,并设置它的 Culling Mask 只渲染特定层次的内容(如地面、建筑物等)。 - 设置该 Camera 输出至一个 Render Texture 资源。 - 最后把此 Render Texture 应用到 Canvas 下面的一个 Image 控件上去展示给用户查看即可。 这种方案虽然增加了些许运行负担,但它允许开发者构建更加复杂的交互逻辑以及支持更大的开放世界环境。 #### 方法三:基于预定义的地图纹理叠加图标表示角色位置 如果项目已经拥有一幅固定不变的大范围区域地图,则可以直接加载预先制作好的二维平面图作为基础素材[^4]。 - 准备好一幅代表当前关卡布局的地图图像文件导入工程目录下; - 使用脚本来控制玩家或其他重要物体的位置标记随实际运动同步改变坐标系下的对应点位; - 同样需要注意的是要让主摄像头忽略掉这些新增加出来的UI元素以免干扰正常视野呈现效果。 以上三种策略各有优劣之处,选择哪一种主要看个人喜好或者团队的技术积累程度还有目标平台硬件条件等因素决定。 ```csharp // 示例代码片段:更新小地图上的玩家标志位置 public class MinimapIconUpdater : MonoBehaviour { public Transform playerTransform; // 玩家对象变换组件引用 private RectTransform iconRectTransform; // 小地图图标矩形变换组件引用 void Start() { iconRectTransform = GetComponent<RectTransform>(); } void Update() { Vector3 worldPosition = playerTransform.position; Vector2 localPositionOnMinimap = ConvertWorldToMinimapCoordinates(worldPosition); iconRectTransform.anchoredPosition = localPositionOnMinimap; } private Vector2 ConvertWorldToMinimapCoordinates(Vector3 worldPos){ float scaleFactorX = ... ; // 计算比例因子 X 方向 float scaleFactorY = ... ; // 计算比例因子 Y 方向 return new Vector2( (worldPos.x * scaleFactorX), (worldPos.z * scaleFactorY)); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值