我的微信小游戏从2.03.00升级到2.03.03或者2.03.04时,出现调用api时api丢失错误

工程文件好像无法上传

我应该怎么上传呢?

工程文件无法上传有什么错误提示吗?不知压缩过后是否可以上传呢?或者你可以用微云或其他网盘生成分享链接?

我尝试上传一个压缩包文件,错误提示是:抱歉,您尝试上传的文件未经授权(授权扩展名:jpg、jpeg、png、gif、txt、log、mp4)。

1 Like

包暂时没法再微信开发者工具中使用,要等我这边把资源上传cdn

您什么时候需要通过微信开发者工具打开我发的压缩包里面的包,我需要提前开启cdn,您也可以换一个cdn重新出包,我发的工程是可以直接出包的
如果您需要看对fmod插件修改的部分,可以在一个受git管理的工程且导入过fmod插件再将我发送的工程文件里面的fmod插件导入进入查看差异
只看位于src/Editor中的3个文件:
BoltIntegration.cs, EditorSettings.cs, EventManager.cs 也可以的

1 Like

好的,非常感谢你提供的这些信息!我先试试从我这边换一个cdn出包。

你好,可否麻烦你试一下将 \Assets\Plugins\FMOD\platforms\html5\src\PlatformWebGL.cs 这个文件里面的代码替换成如下试试看是否能够Build成功呢?

我这边测试的情况是修改了这个WebgGL平台文件后就可以正常build和听到声音,我没有按照你提供的方式去修改那些平台逻辑。

using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

#if UNITY_WEBGL && !UNITY_EDITOR
namespace FMOD
{
    public partial class VERSION
    {
        public const string dll = "__Internal";
    }
}

namespace FMOD.Studio
{
    public partial class STUDIO_VERSION
    {
        public const string dll = "__Internal";
    }
}
#endif

namespace FMODUnity
{
#if UNITY_EDITOR
    [InitializeOnLoad]
#endif
    public class PlatformWebGL : Platform
    {
        static PlatformWebGL()
        {
            Settings.AddPlatformTemplate<PlatformWebGL>("46fbfdf3fc43db0458918377fd40293e");
        }

        internal override string DisplayName { get { return "WebGL"; } }
        internal override void DeclareRuntimePlatforms(Settings settings)
        {
            settings.DeclareRuntimePlatform(RuntimePlatform.WebGLPlayer, this);
        }

#if UNITY_EDITOR
        internal override IEnumerable<BuildTarget> GetBuildTargets()
        {
            yield return BuildTarget.WebGL;
            yield return BuildTarget.WeixinMiniGame;
        }

        internal override Legacy.Platform LegacyIdentifier { get { return Legacy.Platform.WebGL; } }

        protected override BinaryAssetFolderInfo GetBinaryAssetFolder(BuildTarget buildTarget)
        {
            return new BinaryAssetFolderInfo("html5", "Plugins/WebGL");
        }

        protected override IEnumerable<FileRecord> GetBinaryFiles(BuildTarget buildTarget, bool allVariants, string suffix)
        {
            bool emVer_2_0_19 = false;
            bool emVer_3_1_8 = false;
            bool emVer_3_1_39 = false;

#if UNITY_6000_0_OR_NEWER
            emVer_3_1_39 = true;
#elif UNITY_2022_3_OR_NEWER
            emVer_3_1_8 = true;
#else
            emVer_2_0_19 = true;
#endif

#if UNITY_WEIXIN
            emVer_3_1_8 = true;
            emVer_2_0_19 = false;
#endif

            if (allVariants || emVer_3_1_39)
            {
                yield return new FileRecord(string.Format("3.1.39/libfmodstudio{0}.a", suffix));
            }

            if (allVariants || emVer_3_1_8)
            {
                yield return new FileRecord(string.Format("3.1.8/libfmodstudio{0}.a", suffix));
            }

            if (allVariants || emVer_2_0_19)
            {
                yield return new FileRecord(string.Format("2.0.19/libfmodstudio{0}.a", suffix));
            }
        }

        internal override bool IsFMODStaticallyLinked { get { return true; } }
#endif

        internal override string GetPluginPath(string pluginName)
        {
            return string.Format("{0}/{1}.a", GetPluginBasePath(), pluginName);
        }
#if UNITY_EDITOR
        internal override OutputType[] ValidOutputTypes
        {
            get
            {
                return sValidOutputTypes;
            }
        }

        private static OutputType[] sValidOutputTypes = {
           new OutputType() { displayName = "JavaScript webaudio output", outputType = FMOD.OUTPUTTYPE.WEBAUDIO },
        };
#endif
    }
}

好的,我马上试试

请问您有试过播放一次声音然后播放一次广告,之后再次播放一次声音吗,之前我是再次播放声音的时候声音会消失

我现在按照您说的重新导入插件修改代码进行打包试试

我跟你的说的改了之后,在脚本:EditorSettings.cs 的444行CanBuildTarget方法中的第465行进入异常返回false导致build失败

BuildFailedException: There is an FMOD binary missing for build target WeixinMiniGame:

  • Assets/Plugins/FMOD/platforms/html5/lib/3.1.8/libfmodstudio.a
    Please run the FMOD/Reorganize Plugin Files menu command.
    Error building Player: BuildFailedException: There is an FMOD binary missing for build target WeixinMiniGame:
  • Assets/Plugins/FMOD/platforms/html5/lib/3.1.8/libfmodstudio.a
    Please run the FMOD/Reorganize Plugin Files menu command.

之后我尝试绕过这个异常判断,成功的build出去了,但是出现了之前升级fmod版本的错误,即

目前我的团结引擎版本是1.2.0,FMOD的版本是2.03.00

感谢告知,我使用的团结引擎版本是1.3.0,FMOD的版本是2.03.04。

这个报错原因是因为缺少了3.1.8版本的Emscripten编译器,我查了一下发现2.03.00版本的编译库里似乎只有2.0.19的编译器。

这可能是因为我在修改过的PlatformWebGL.cs 文件里的71行添加了微信小游戏平台所需要的编译器版本导致的。
···
#if UNITY_WEIXIN
emVer_3_1_8 = true;
emVer_2_0_19 = false;
#endif
···
不知道你有没有试过2.03.04版本,看看是否能正常build呢?

这个我确实还没有测试过,我可能还需要点时间再测试一下。

我试过了,将fmod版本改成2.03.04,根据你的提示修改了PlatformWebGL.cs 脚本并直接build成功后,成功运行了,但是还是出现播放过一次激励视频广告后声音消失的问题

这个也是我的账号,之后我将微信小游戏的插件也更到最新版本,播放激励视频广告导致声音消失的问题仍然存在

新年快乐,蛇年大吉!

我这边在使用你提供的工程文件测试的时候,并没有办法复现播放广告打断声音的问题,不清楚是否遗漏了哪一步,具体表现就如视频里表现的这样。

我可能还需要更多时间进行调查,主要是微信开发者平台调试和CDN设置的坑看起来非常多而且很花时间,然后是我这边海外IP进行测试的时候从CDN下载资源的时候经常会遇到问题,似乎是因为资源下载有时候不成功导致各种奇怪bug。 :joy:

你也新年快乐!蛇年安康