Unity MM

弱联网

  • unity请用这个
  • MMSDK_1.2.1
  • jar加压把assets放到unity对应文件夹(因为unity不会把这里面的assets打到包里)
  • libs下的内容拷贝

非弱联网

  • 拷贝libs下目录到对应文件夹
  • mmbilling.2.3.0.jar解压把assets放到unity对应文件夹(因为unity不会把这里面的assets打到包里)
  • 修改Manifest
     <!-- MM -->
      <service
                android:name="mm.purchasesdk.iapservice.PurchaseService"
                android:exported="true" >
    
                <!-- android:process="mm.iapServices" > -->
                <intent-filter android:priority="230" >
                    <action android:name="com.aspire.purchaseservice.BIND" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
                <intent-filter android:priority="230" >
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.SAFIAP.COMPONENT" >
                    </category>
                </intent-filter>
            </service>
            <!-- android:excludeFromRecents="true" -->
            <!-- android:launchMode="singleInstance" -->
            <activity
                android:name="mm.purchasesdk.iapservice.BillingLayoutActivity"
                android:configChanges="orientation|keyboardHidden"
                android:theme="@android:style/Theme.Translucent" >
                <intent-filter android:priority="230" >
                    <action android:name="com.herocraft.game.zombiederby.com.mmiap.activity" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>
    
            <!-- android:process="safiap.framework.safframeworkmanager" begin -->
            <service
                android:name="safiap.framework.SafFrameworkManager"
                android:exported="true"
                android:process="safiap.framework" >
                <intent-filter android:priority="600" >
    
                    <!-- ID for services declared in AIDL -->
                    <action android:name="safiap.framework.sdk.ISAFFramework" />
                </intent-filter>
                <intent-filter android:priority="600" >
    
                    <!-- ID for services declared in AIDL -->
                    <action android:name="safiap.framework.ACTION_START_DOWNLOAD" />
                </intent-filter>
                <intent-filter android:priority="600" >
    
                    <!-- ID for services declared in AIDL -->
                    <action android:name="safiap.framework.ACTION_CHECK_UPDATE" />
                </intent-filter>
            </service>
            <!-- receivers -->
            <receiver android:name="safiap.framework.CheckUpdateReceiver" >
                <intent-filter>
                    <action android:name="safiap.framework.ACTION_CANCEL_NOTIFICATION" />
                </intent-filter>
                <intent-filter>
                    <action android:name="safiap.GET_SHARED_DATA" />
                </intent-filter>
                <intent-filter>
                    <action android:name="safiap.framework.ACTION_SET_TIMER" />
                </intent-filter>
            </receiver>
    
            <activity
                android:name="safiap.framework.ui.UpdateHintActivity"
                android:configChanges="orientation"
                android:excludeFromRecents="true"
                android:launchMode="singleInstance"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" >
                <intent-filter>
                    <action android:name="safiap.framework.ACTION_TO_INSTALL" />
                </intent-filter>
                <intent-filter>
                    <action android:name="safiap.framework.ACTION_TO_INSTALL_IAP" />
                </intent-filter>
                <intent-filter>
                    <action android:name="safiap.framework.ACTION_NETWORK_ERROR_IAP" />
                </intent-filter>
                <intent-filter>
                    <action android:name="safiap.framework.ACTION_NETWORK_ERROR_FRAMEWORK" />
                </intent-filter>
            </activity>
    
            <service
                android:name="safiap.framework.logreport.monitor.handler.LogreportHandler"
                android:process=":remote" />
            <!-- android:process="safiap.framework.safframeworkmanager" end -->
  • 注意上面的BillingLayoutActivity部分的action android:name,要换成你的包名+.com.mmiap.activity

Implement

  • 将splash.jar,mmsmsbilling1.2.0.jar拷贝到Plugins/Android/libs
  • mmiap拷贝到 Plugins/Android/assets
  • CmBillingAndroid.cs GameStart.cs HelpAboutAndroid.cs CmBillingResult.cs拷贝到Plugins/Android
  • res/layout 下面的文件拷贝到 Plugins/Android/res/layout
  • res/valuse 下面的文件拷贝到 Plugins/Android/res/values
  • res/drawable drawable-hdpi 下面的文件拷贝到对应目录
  • 修改CmBillingAndroid.cs,打开 private AndroidJavaClass klass = new AndroidJavaClass(“com.yx.mm.MMUnity”);
  • manifest修改,增加MM receiver和 MM的permission
    <?xml version="1.0" encoding="utf-8"?>
    <manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.unity3d.player"
    	android:installLocation="preferExternal"
        android:versionCode="900"
        android:versionName="0.9.0">
        <supports-screens
            android:smallScreens="true"
            android:normalScreens="true"
            android:largeScreens="true"
            android:xlargeScreens="true"
            android:anyDensity="true"/>
    
        <application
    		android:icon="@drawable/app_icon"
            android:label="@string/app_name"
            android:debuggable="true">
    
    <!-- CT -->
     <activity android:name="com.yx.Splash"
    			android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    			android:screenOrientation="sensor">
    			 <intent-filter>
    				<action android:name="android.intent.action.MAIN" />
    				<category android:name="android.intent.category.LAUNCHER" />
    			</intent-filter> 
    		</activity>	
            <activity android:name="com.yx.MyUnityPlayerProxyActivity"
                      android:label="@string/app_name"
                      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    <!-- MM      
               <intent-filter>
                     <action android:name="android.intent.action.MAIN" /> 
                    <category android:name="android.intent.category.LAUNCHER" /> 
                </intent-filter> 
    -->
            </activity>
            <activity android:name="com.yx.MyUnityPlayerActivity"
                      android:label="@string/app_name"
                      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
            </activity>
            <activity android:name="com.yx.MyUnityPlayerNativeActivity"
                      android:label="@string/app_name"
                      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
                <meta-data android:name="android.app.lib_name" android:value="unity" />
                <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
            </activity>
    <!-- MM    
     <receiver
                android:name="mm.sms.purchasesdk.sms.SMSReceiver"
                android:exported="false" >
                <intent-filter>
                    <action android:name="aspire.iap.SMS_SEND_ACTIOIN" />
                    <action android:name="aspire.iap.SMS_DELIVERED_ACTION" />
                </intent-filter>
            </receiver>
    --> 
    </application>
    	<!-- AndroidManifest.xml.permision.txt -->
    <!-- CT -->
    	<uses-permission android:name="android.permission.SEND_SMS" />
    	<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <!-- MM   
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.SEND_SMS" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    -->
    </manifest> 

CmBillingResult.cs

  • 修改 计费成功之后的处理if (CmBillingAndroid.BillingResult.SUCCESS == results [1]) {
  • CmBillingResult.Billing(“018”);

GameStart.cs

  • 在游戏最开始的scene,里面的maincamera下面挂载(Add Component)这个脚本

修改计费配置文件

  • res/valuse/g_strings.xml
  • 找到MM计费点, 修改mmAPPID , mmAPPKEY, mm_item_cnt
  • 对每个计费点开始配置, 第一个计费点是mm_item_1_xxx
  • 配置id,就是计费点id
  • 配置name, 计费点名称
  • des,计费点描述
  • img,图片(图片放到assets目录下,如果不配置,默认会找 assets/yx_index.png)
  • real,当前计费点只是展示,真正会调用real计费点
使用优化算法,以优化VMD算法的惩罚因子惩罚因子 (α) 和分解层数 (K)。 1、将量子粒子群优化(QPSO)算法与变分模态分解(VMD)算法结合 VMD算法背景: VMD算法是一种自适应信号分解算法,主要用于分解信号为不同频率带宽的模态。 VMD的关键参数包括: 惩罚因子 α:控制带宽的限制。 分解层数 K:决定分解出的模态数。 QPSO算法背景: 量子粒子群优化(QPSO)是一种基于粒子群优化(PSO)的一种改进算法,通过量子行为模型增强全局搜索能力。 QPSO通过粒子的量子行为使其在搜索空间中不受位置限制,从而提高算法的收敛速度与全局优化能力。 任务: 使用QPSO优化VMD中的惩罚因子 α 和分解层数 K,以获得信号分解的最佳效果。 计划: 定义适应度函数:适应度函数根据VMD分解的效果来定义,通常使用重构信号的误差(例如均方误差、交叉熵等)来衡量分解的质量。 初始化QPSO粒子:定义粒子的位置和速度,表示 α 和 K 两个参数。初始化时需要在一个合理的范围内为每个粒子分配初始位置。 执行VMD分解:对每一组 α 和 K 参数,运行VMD算法分解信号。 更新QPSO粒子:使用QPSO算法更新粒子的状态,根据适应度函数调整粒子的搜索方向和位置。 迭代求解:重复QPSO的粒子更新步骤,直到满足终止条件(如适应度函数达到设定阈值,或最大迭代次数)。 输出优化结果:最终,QPSO算法会返回一个优化的 α 和 K,从而使VMD分解效果最佳。 2、将极光粒子(PLO)算法与变分模态分解(VMD)算法结合 PLO的优点与适用性 强大的全局搜索能力:PLO通过模拟极光粒子的运动,能够更高效地探索复杂的多峰优化问题,避免陷入局部最优。 鲁棒性强:PLO在面对高维、多模态问题时有较好的适应性,因此适合海上风电时间序列这种非线性、多噪声的数据。 应用场景:PLO适合用于优化VMD参数(α 和 K),并将其用于风电时间序列的预测任务。 进一步优化的建议 a. 实现更细致的PLO更新策略,优化极光粒子的运动模型。 b. 将PLO优化后的VMD应用于真实的海上风电数据,结合LSTM或XGBoost等模型进行风电功率预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值