【问题标题】:Old version of Unity WebPlayer binary gets loaded from cache, using Facebook Unity integration使用 Facebook Unity 集成从缓存中加载旧版本的 Unity WebPlayer 二进制文件
【发布时间】:2014-06-25 01:52:56
【问题描述】:

我们正在将我们的游戏从我们自己的画布页面切换到使用 Facebook 上的 Unity 集成。然而,在我们的开发测试期间,我们偶尔会遇到从浏览器缓存加载 webplayer 二进制文件的问题,即使更新的版本已上传到服务器。

手动清除浏览器缓存可以解决问题,但这并不是我们一直想要向用户展示的解决方案。以前,当我们自己嵌入统一对象时,我们还通过 url 传递了一个 ?version 标志,这将使其保持最新状态,但是在打开集成的情况下我们不能再这样做了,除非我们手动更新二进制文件每次我们进行构建时,我们的应用设置中的位置链接(有点让人头疼,因为我们的构建过程的其余部分是自动化的)

有没有办法解决这个问题? 谢谢。

【问题讨论】:

  • 截至目前,除了手动更新二进制位置之外,别无他法。
  • 很公平。感谢您的快速回复。知道这是否是将来可能解决的问题吗?

标签: facebook facebook-unity-sdk unity-web-player


【解决方案1】:

我们有完全相同的问题,我可以说唯一的解决方案是每次构建时更改二进制文件名,但仅限于您的生产环境。这是我们的解决方案:

  • 我们有开发(沙盒模式)和生产环境,每个都有一个应用程序。

  • 1234563测试的问题。
  • 对于生产,我们的构建管道构造二进制名称: YourGameNameMainVersion.SubVersion.TimeStamp 像:MyGame0.3.1006-1004.unity3d,这个是在每次构建时从 Facebook 的应用程序设置页面手动设置的。但这不是一个大问题,因为您不会希望每天为生产创建超过一次/两次的新版本。

【讨论】:

  • 我们发现需要做的就是在我们提供给 Facebook 的统一二进制 URL 的末尾添加“?version=xxxx”(其中 xxxx 是我们的最新修订号)。我们实际上根本没有重命名二进制文件。这“似乎”足以让浏览器知道它是一个新文件并且不从缓存中加载它。和你一样,我们每次都必须手动更新它,但就像你说的,你通常不会经常进行生产构建,所以这不是世界末日。
【解决方案2】:

我们发现只需添加“?version=xxxx”

这行得通,而且非常好。我现在做的,只是在主链接中更改版本(?version=1.52):

<a href="http://cometoplaynow.com/Labyrinth3D/Labyrinth3D.html?version=1.52">

使用它的好处:

  1. 仅更改 1 个数字 - 链接仍然相同(如果人们从您的网站打开游戏)

  2. 节省将保持原样(如果您更改 .unity3d,您将丢失 PlayerPrefs)。

【讨论】:

  • 我体验过的这种方法的问题是它永远不会缓存。它总是会从网上获得完整的 .unity3d 二进制文件。我错了吗?
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多