LevelPlay 集成故障排除
排除常见的 LevelPlay 集成问题。
阅读时间13 分钟最后更新于 2 天前
将 LevelPlay 与 Unity 编辑器集成时,可能会遇到一些问题。请按照本指南对以下类型的问题进行故障排除:
使用 LevelPlayBannerPosition 指定横幅广告位置
错误
如果在使用 作为枚举或整数时遇到编译错误,这是因为在 8.8.0 版中, 已从枚举更新为类。此更改会影响在代码中引用横幅广告位置的方式。
LevelPlayBannerPositionLevelPlayBannerPosition解决方案
在 LevelPlay Unity 包的 8.8.0 和 8.8.1 版本中, 已从枚举更改为类。更新后的 API 支持九个预定义的横幅广告位置,并允许通过创建 对象来指定精确的 (x,y) 坐标。
LevelPlayBannerPositionLevelPlayBannerPosition如果在 Unity 编辑器控制台中看到 编译错误,请参阅以下示例以了解一些可能的原因及其解决方案:
LevelPlayBannerPosition示例 1:参数默认值错误
传递具有默认枚举值的 参数时,可能会看到编译错误。要解决此问题,请改用 null 值:
LevelPlayBannerPosition// Use null for the default value, or pass a value explicitlypublic LevelPlayBannerAd(string adUnitId, LevelPlayBannerPosition position = null)
示例 2:无效的开关或枚举比较
如果您的代码使用 switch 语句,或者以枚举或整数形式比较 值,可能会看到编译错误。例如:
LevelPlayBannerPositionswitch (position) { case LevelPlayBannerPosition.BottomCenter: }
由于 现在是一个类,因此应将此逻辑替换为直接的对象比较:
LevelPlayBannerPositionif (position == LevelPlayBannerPosition.BottomCenter) { /* Handle case */ }
还可以在需要时使用 属性比较横幅广告位置以便用于布局逻辑、日志记录或分析目的。例如:
Descriptionif (position.Description == "BottomCenter") { Debug.Log("Banner is at bottom-center.");}
重复类错误消息
尝试构建或测试项目时,收到重复类错误消息 CSO433。此错误消息将标识发生重复的类及其出现在哪些程序集之中。以下是重复类错误消息的一个示例:
- The type exists in both
IronSourceMediationSettingsandAssembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'Unity.LevelPlay, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
重复类错误有以下可能的原因:
请参阅以下各节了解这些问题的描述和解决方案。
更新了 Ads Mediation 包但未移除 Unity 插件
在已安装 .unitypackage 文件(Unity 插件)的情况下,通过 Ads Mediation 包更新到了最新版本的 Unity LevelPlay。
解决方案
在安装或更新 Ads Mediation 包之前,请移除 .unitypackage 文件(Unity 插件)。要移除该插件,请完成以下步骤:
- 在 Unity 编辑器中打开您的项目,然后转到 Assets(资源)。
- 在 **Assets(资源)**中,根据使用的 LevelPlay SDK 版本,执行以下操作之一:
- SDK v7.8.0 及更低版本:右键单击 IronSource > Delete(删除)。
- SDK v8.0.0:右键单击 LevelPlay > Delete(删除)。
更新了 Unity 插件但未移除 Ads Mediation 包
在已安装 Ads Mediation 包的情况下,通过 .unitypackage 文件更新到了最新版本的 Unity LevelPlay。
解决方案
在安装或更新 Unity 插件之前,请移除 Ads Mediation 包。按照以下步骤从 Unity 编辑器中移除 Ads Mediation 包:
- 在 Unity 编辑器中打开项目,然后转至 窗口 > 软件包管理 > Package Manager。
- 在 **Package Manager(包管理器)**中,选择 Packages(包)> In Project(项目内)。
- 选择 Ads Mediation > Remove(移除)。
- 从 Unity 编辑器打开您的项目,然后转到 Assets(资源)。
- 在 **Assets(资源)**中,根据使用的 LevelPlay SDK 版本,执行以下操作之一:
- SDK v7.8.0 及更低版本:右键单击 IronSource > Delete(删除)。
- SDK v8.0.0:右键单击 LevelPlay > Delete(删除)。
- 如果已安装 Mobile Dependency Resolver,还需右键单击 Mobile Dependency Resolver > Delete(删除)。
重大的 Ads Mediation 包更新
您将 Ads Mediation 包从较低版本更新到了高得多的版本。
解决方案
如果您的 Ads Mediation 包需要进行重大更新,您可能需要执行其他步骤以确保顺利升级。
例如,如果要从 v1.0.0 更新到 v8.0.0,则需要在更新时执行其他步骤。如需了解更多信息,请参阅 Unity Package Manager(包管理器)中的 Ads Mediation 包描述。
无法从 LevelPlay SDK 中移除脚本符号
您从 LevelPlay SDK 中移除了 脚本符号,但它始终自动重新出现在 SDK 中。
LEVELPLAY_DEPENDENCIES_INSTALLED原因
从 SDK 中移除 脚本符号时,SDK 将始终自动重新添加此脚本符号。从 LevelPlay SDK Unity 包版本 8.0.0 开始,此脚本符号是必需的。
LEVELPLAY_DEPENDENCIES_INSTALLED解决方案
此问题没有已知的解决方案,因为从版本 8.0.0 开始,LevelPlay SDK 需要此脚本符号。此符号在删除后将始终自动重新添加。
缺少依赖项类错误消息
在安装 Ads Mediation 包后,您收到了依赖项类错误消息。以下消息是可能缺少依赖项类警告的示例:
- The type or namespace name does not exist in the namespace
Core.Unity.Services - The type or namespace name could not be found.
Newtonsoft - The type or namespace name could not be found.
EditorGameServiceFlagEnabler
原因
如果 LevelPlay SDK Unity 包中的 依赖项被移除或无法安装,则可能会发生这种情况。如果缺少此依赖项,控制台将显示一条错误消息,指出找不到哪些依赖项类。
com.unity.services.core解决方案
有两种方法可以解决缺少的 依赖项:按名称手动安装 Services Core 包,或移除 脚本符号。
com.unity.services.coreLEVELPLAY_DEPENDENCIES_INSTALLED在 Package Manager(包管理器)中安装 Services Core 包
要解决缺少的依赖项,请执行以下操作在 Unity Package Manager(包管理器)中安装 Services Core 包:
- 在 Unity 编辑器中打开项目,然后转至 窗口 > 软件包管理 > Package Manager。
- 在 **Package Manager(包管理器)**窗口中,选择 + 图标以打开下拉菜单,然后选择 **Install package by name...(按名称安装包...)**以手动输入包名称。
- 在 **Name(名称)**字段中输入 ,然后选择 Install(安装)。
com.unity.services.core
移除 LEVELPLAY_DEPENDENCIES_INSTALLED 脚本符号
还可以使用 脚本符号恢复 Services Core 包。移除后的脚本符号将自动重新添加。在重新安装过程中, 包也会自动重新安装。如果编辑器不显示 Services Core 包,可以使用此方法。
LEVELPLAY_DEPENDENCIES_INSTALLEDcom.unity.services.core要解决缺少的依赖项,请执行以下操作,从 LevelPlay SDK Unity 包中删除 脚本符号:
LEVELPLAY_DEPENDENCIES_INSTALLED- 在 Unity 编辑器中打开项目,然后转到 Edit(编辑)> Project Settings(项目设置)> Player(播放器)。
- 在 **Other Settings(其他设置)**面板中,向下滚动到 Script Compilation(脚本编译)。
- 选择减号 (−) 以移除相应符号,然后选择 LEVELPLAY_DEPENDENCIES_INSTALLED。
- 选择 **Apply(应用)**以保存所做的更改。
编辑器 6.0+ UPM 软件包安装错误
错误
在 Unity 编辑器 6.0 及以上版本上,若您为 Ads Mediation (LevelPlay) 使用 ,可能会因点击 Quick Install(快速安装)按钮而误安装 UPM 软件包,该按钮位于以下路径:Services(服务)> Ads Mediation (LevelPlay) > Install(安装)。这可能导致编译错误,且软件包无法正常工作。
.unitypackage解决方案
一个快速解决方案是通过 Package Manager(包管理器)移除 UPM 软件包:
- 转到 Unity 编辑器顶部菜单,选择 窗口 > 软件包管理 > Package Manager。
- 查找已安装的 Ads Mediation 包。
- 展开它,在右侧面板查看详细信息。
- 选择 Remove(移除)卸载 UPM 软件包。
按照上述步骤操作后,您可以将 恢复至正常状态并解决问题。
.unitypackage移除 Ads Mediation 包
要从 Unity 编辑器中移除 Ads Mediation 包,您需要完成以下三个任务:
按照以下步骤从 Unity 编辑器中移除 Ads Mediation 包:
- 在 Unity 编辑器中打开项目,然后转至 窗口 > 软件包管理 > Package Manager。
- 在 Package Manager(包管理器)中,选择 Packages(包)> In Project(项目内)。
- 选择 Ads Mediation > Remove(移除)。
删除 Ads Mediation 资源
移除 Ads Mediation 包时,也请同时删除 LevelPlay 资源。您可能还需要移除其他文件(如果安装了这些文件)。请参阅以下说明,了解如何删除必要的 Ads Mediation 资源。
LevelPlay 资源
移除 Ads Mediation 包后,需要删除 LevelPlay 资源。根据所使用的 LevelPlay SDK 版本,该过程会略有不同。按照以下步骤移除 LevelPlay 资源:
- 在 Unity 编辑器中打开您的项目,然后转到 Assets(资源)。
- 在 **Assets(资源)**中,根据使用的 LevelPlay SDK 版本,执行以下操作之一:
- SDK v7.8.0 及更低版本:右键单击 IronSource,然后选择 Delete(删除)。
- SDK v8.0.0:右键单击 LevelPlay,然后选择 Delete(删除)。
Ads Mediation 示例
如果导入了 Ads Mediation 示例,请在移除 Ads Mediation 包时也将该示例删除。按照以下步骤删除 Ads Mediation 示例:
- 在 Unity 编辑器中打开您的项目,然后转到 Assets(资源)> Samples(示例)> Ads Mediation。
- 右键单击 Ads Mediation 示例,然后选择 Delete(删除)。
Mobile Dependency Resolver
如果安装了 Mobile Dependency Resolver,请通过执行以下操作将其删除:
- 在 Unity 编辑器中打开您的项目,然后转到 Assets(资源)。
- 右键单击 Mobile Dependency Resolver,然后选择 Delete(删除)。
删除 LevelPlay 脚本符号
删除 Ads Mediation 包及其资源后,请按照以下步骤移除 脚本符号:
LEVELPLAY_DEPENDENCIES_INSTALLED- 在 Unity 编辑器中打开项目,然后转到 Edit(编辑)> Project Settings(项目设置)。
- 在设置列表中,转到 Player(播放器)或 File(文件)> Build Settings(构建设置)> Player Settings(播放器设置)。
- 向下滚动到 Other Settings(其他设置)> Script Compilation(脚本编译)。
- 右键单击脚本符号 LEVELPLAY_DEPENDENCIES_INSTALLED,然后选择 Delete(删除)。