You need to enable JavaScript to run this app. Unity 鼠标悬停RawImage获取关联存档文件实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Unity 鼠标悬停RawImage获取关联存档文件实现方法

跨脚本关联数据传递的实现方案

不需要复杂的事件系统或者全局数据管理器,直接用组件引用赋值就能解决当前的传值问题:

  • 在SavedGamesSlots脚本的实例化逻辑里,拿到每一个saveSlotPrefab的生成实例后,直接通过GetComponent获取挂载在槽位上的MouseHover脚本实例
  • 在MouseHover脚本中提前定义一个公开的字符串字段,比如public string associatedSaveFileName;
  • 遍历到每个截图对应的文件名(也就是代码里的string fileName = imagesToLoad[i];)时,直接把这个文件名赋值给对应槽位的MouseHover实例的字段:slotInstance.GetComponent<MouseHover>().associatedSaveFileName = fileName;
  • 后续不管是悬停交互、点击跳转,直接读取当前MouseHover实例上的associatedSaveFileName字段就行,完全不需要额外绕路从Texture2D的Name属性里取字符串,也不会出现路径匹配错位的问题
分文件夹存储的配对逻辑优化说明

完全可以通过分目录存储的方式简化配对逻辑,而且这种方案比同目录下靠文件名模糊匹配的稳定性更高:

  • 你可以固定磁盘存储的目录结构,把截图和存档分别放在独立的一级目录下,参考结构如下:
游戏运行根目录/
├─ screenshots/ (存放所有存档槽位截图)
│  ├─ slot_0.png
│  ├─ slot_1.png
│  └─ slot_9.png
└─ saves/ (存放对应槽位的存档文件)
   ├─ slot_0.sav
   ├─ slot_1.sav
   └─ slot_9.sav

只要保证两个目录下的文件主文件名完全一致(比如截图叫slot_0.png,对应存档就叫slot_0.sav),遍历截图时只需要去掉截图的后缀,直接拼接存档目录的路径就能拿到对应存档的全路径,不需要写复杂的字符串匹配逻辑

  • 这种存储结构还能避免之前同目录下混放两类文件带来的遍历问题——之前如果把截图和存档放同一个目录,遍历截图的时候还要额外加判断过滤非png文件,分目录之后遍历逻辑会更简单

开发避坑:不要为了跨脚本传值把关联数据存在Unity内置组件(比如RawImage、Texture2D)的自定义扩展字段上,这类字段在场景重载、资产序列化的过程中很容易出现值丢失的问题,直接把自定义数据存在自己写的MonoBehaviour脚本实例的公开字段上,是Unity里最稳定的实例数据传递方式。

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 03:06:08