【问题标题】:Unity3D invalid token error on official code from documentation文档中官方代码上的 Unity3D 无效令牌错误
【发布时间】:2022-01-18 00:31:51
【问题描述】:

我试图在我的游戏中统一设置简单的广告系统,但统一文档中的奖励广告脚本给了我无效令牌错误,我不知道为什么

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Advertisements;

public class RewardedAdsButton : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
    [SerializeField] Button _showAdButton;
    [SerializeField] string _androidAdUnitId = "Rewarded_Android";
    [SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
    public string _adUnitId = null;
#if UNITY_IOS
        _adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
        _adUnitId = _androidAdUnitId;
#endif

Assets\Scripts\RewardedAdsButton.cs(14,13):错误 CS1519:类、结构或接口成员声明中的标记“=”无效

Assets\Scripts\RewardedAdsButton.cs(14,31):错误 CS1519:无效令牌“;”在类、结构或接口成员声明中

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    在这种情况下,文档极具误导性!

    您不能只在班级级别重新分配字段。特别是不使用其他非常量字段!您不能在任何方法之外使用它。


    这可能应该以类似的方法发生,例如在Awake

    public class RewardedAdsButton : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
    {
        [SerializeField] Button _showAdButton;
        [SerializeField] string _androidAdUnitId = "Rewarded_Android";
        [SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
    
        [NonSerialized] public string _adUnitId = null;
    
        private void Awake ()
        {
    #if UNITY_IOS
            _adUnitId = _iOSAdUnitId;
    #elif UNITY_ANDROID
            _adUnitId = _androidAdUnitId;
    #endif
        }
    
        ...
    }
    

    或者,我实际上宁愿简单地使用property,例如

    public class RewardedAdsButton : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
    {
        [SerializeField] Button _showAdButton;
        [SerializeField] string _androidAdUnitId = "Rewarded_Android";
        [SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
    
        public string _adUnitId
        {
            get
            {
    #if UNITY_IOS
                return _iOSAdUnitId;
    #elif UNITY_ANDROID
                return _androidAdUnitId;
    #else
                return null;
    #endif
            }
        }
    

    【讨论】:

    • 谢谢!这似乎行得通。也是的,它是官方实现,这里是链接docs.unity.com/ads/ImplementingRewardedAdsUnity.htm
    • @kpcttobee 哦,男孩..那我很抱歉那部分!有人应该告诉他们..他们在那里的方式确实没有意义
    • @kpcttobee 实际上通过此处的链接立即报告了它;)希望将来得到修复
    • 他们于 2022 年 1 月 7 日更新了页面,但尚未修复...
    • @H_7 在我报告了文档的问题后,它通过初始化 Awake 中的字段进行了更新;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2020-12-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 2019-04-12
    • 2021-11-16
    相关资源
    最近更新 更多