升级新版SDK
This commit is contained in:
parent
61e9b81f8a
commit
c686cc7891
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.unity3d.player"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<application>
|
||||
<activity android:name="com.unity3d.player.UnityPlayerActivity"
|
||||
android:theme="@style/UnityThemeSelector">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
|
||||
</activity>
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
|
||||
</manifest>
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e0192aaba931b459d80bca85678f958f
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.unity3d.player"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="preferExternal">
|
||||
<supports-screens
|
||||
android:smallScreens="true"
|
||||
android:normalScreens="true"
|
||||
android:largeScreens="true"
|
||||
android:xlargeScreens="true"
|
||||
android:anyDensity="true"/>
|
||||
|
||||
<application android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/app_icon"/>
|
||||
</manifest>
|
|
@ -1,33 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cba6da959876b401786c14a995bec8ed
|
||||
folderAsset: yes
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.applovin.mediation.unity.adapters.google">
|
||||
<application>
|
||||
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-3916046151571724~6560524678" />
|
||||
</application>
|
||||
</manifest>
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cf61ddd9f6ac647d4accf8a1a1d2a690
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,2 +0,0 @@
|
|||
target=android-28
|
||||
android.library=true
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ccb8f1abd84ed4fa497d596a0e65ca25
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
|
||||
org.gradle.parallel=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
android.useNewApkCreator=false
|
||||
android.enableR8 = true
|
||||
**ADDITIONAL_PROPERTIES**
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4957a197659864483a9839b8f5a93a32
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,64 +0,0 @@
|
|||
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
dependencies {
|
||||
implementation project(':unityLibrary')
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
multiDexEnabled true
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
applicationId '**APPLICATIONID**'
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**SIGN**
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
minifyEnabled **MINIFY_DEBUG**
|
||||
useProguard **PROGUARD_DEBUG**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
jniDebuggable true
|
||||
}
|
||||
release {
|
||||
minifyEnabled **MINIFY_RELEASE**
|
||||
useProguard **PROGUARD_RELEASE**
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt')**SIGNCONFIG**
|
||||
}
|
||||
}**PACKAGING_OPTIONS****SPLITS**
|
||||
**BUILT_APK_LOCATION**
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = false
|
||||
}
|
||||
density {
|
||||
enableSplit = false
|
||||
}
|
||||
abi {
|
||||
enableSplit = true
|
||||
}
|
||||
}
|
||||
}**SPLITS_VERSION_CODE****LAUNCHER_SOURCE_BUILD_SETUP**
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 76fa4c95ef4fb4653aaadcdefce414f3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,39 +0,0 @@
|
|||
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
**APPLY_PLUGINS**
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.android.support:multidex:1.0.3'
|
||||
**DEPS**}
|
||||
|
||||
android {
|
||||
compileSdkVersion **APIVERSION**
|
||||
buildToolsVersion '**BUILDTOOLS**'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion **MINSDKVERSION**
|
||||
targetSdkVersion **TARGETSDKVERSION**
|
||||
ndk {
|
||||
abiFilters **ABIFILTERS**
|
||||
}
|
||||
versionCode **VERSIONCODE**
|
||||
versionName '**VERSIONNAME**'
|
||||
consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
aaptOptions {
|
||||
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
|
||||
}**PACKAGING_OPTIONS**
|
||||
}**REPOSITORIES****SOURCE_BUILD_SETUP**
|
||||
**EXTERNAL_SOURCES**
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fd262932e6bc541748016095db13f618
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 37bfd92a04d0a48ceaf2e9e784a6d59a
|
||||
guid: f4f6a35ea14114d3fa7f90d36822d9c0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 37976cfe0530549b39d0f7e0271a4255
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,4 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 407ffca6c655a443ba2a0b82d2a43bdc
|
||||
DefaultImporter:
|
||||
userData:
|
Binary file not shown.
Binary file not shown.
|
@ -1,32 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 99fd02f5a1b324a52afb1c8578a1e570
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7c2be9a7dcf6d40f5af25d632d403f47
|
||||
guid: 967b873622a954dc7afad1978782fc2d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 48ba631656f684da8a08821a47c72d49
|
||||
guid: eca69e0c5e72e436cb319d67d66e889e
|
||||
folderAsset: yes
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7e4ad530b71b04e9badfe094662be466
|
||||
guid: b9d295f1d6b40474b832740c53dc0162
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 79a6505a2ad55417598ed33ded0ee42c
|
||||
guid: b1e0c8870faab4b1e81eb56a2625ca49
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9be3256ce7a394ef3bb7f2b152623c9b
|
||||
guid: 9e12daaa70a7c4135a17c39fd22fada3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0b5ad6ea0b8224b33a9c57794cfcce22
|
||||
guid: 5da1691e284094478a2e118f3b0a75f3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f2bca2410fbd24ebfb259861cbcb618d
|
||||
guid: cf3e87ee224034a7ca32d0029936d6c9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d77b338aeff804c38a0c3a55134a24c0
|
||||
guid: ad451212a49674981ba4f6b25add243e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 60dfc12b4555d491baefbeb12eb6a5cc
|
||||
guid: aa1bc22b5c00243859a237218c12aca1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6f3b3743de60f43f8853b84fcf591233
|
||||
guid: 666f447dd2b6443b39554966728d7c78
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fcd63e4b35cbe4f60827f97ec3f7aa3a
|
||||
guid: 936e305fe37c541929e42bb5327a2b21
|
||||
folderAsset: yes
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6c5ea9f5d57b1467786d11920a447376
|
||||
guid: 31d9a89eba025469c9b0a36f7e21ed95
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b6b6ea391ba81486898e570cdecd8e67
|
||||
guid: 9840d4c4318154ad0aedd3db85a160c5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ea4f8b916800a4266947cff5c6361d76
|
||||
guid: 782c7de76a22d40dfb37a8437a2ea3a3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a32a9ea8d5f3d4507be277781aa64996
|
||||
guid: 1294a7658c772475faf0ec2c9f3e0c75
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3cb01ba1d3232413184a3e1d2ddae469
|
||||
guid: a61e112658de04b20b31be593643b5c9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a6c6fa2cc336c4116a070432df19557e
|
||||
guid: 0541d7fc6a97d43ca9b8c671a08a21b5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1cf163327b00b47c89402217c4af48fd
|
||||
guid: 029e23b4cda80416d9ed94ad22322a25
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4c164d21c3ce246e2b269411a2146e30
|
||||
guid: 028f9d614ff9645049c5442f49e415a0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 03be8413670c34ab8b1761dca9be5350
|
||||
guid: 2ba6796a5cd03490aad8467505ab075e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e2485029af36d4506847c006be7b75ec
|
||||
guid: f331eb275e4a044118d322d3a084c5dc
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 531c4d98e2c0440e68752582b1ee80cd
|
||||
guid: dcad451e8aec74340b22c7a5ad1ccbd1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6d17da4f27dbb4d4ba721624025cad78
|
||||
guid: 9029b80a1d92f4b059f54c3a82301106
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0eb5186dcc8134d2bae939800247ae41
|
||||
guid: b29d5e4271ebd461ebf3bca61b62460a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ab5515f5167f64ad7bf3f45d7ae74068
|
||||
guid: 2284204ea11fb4b92bce0a0b687322c5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
|
Binary file not shown.
|
@ -1,32 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a5c10e799954c43e193e2dabe5dae3b9
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
Binary file not shown.
|
@ -1,32 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fddc613f7227b4bcf939ece8d0fdc68a
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,13 +0,0 @@
|
|||
/* Localized versions of Info.plist keys */
|
||||
"CFBundleDisplayName" = "Chicken";
|
||||
"CFBundleName" = "Chicken";
|
||||
"NSBluetoothPeripheralUsageDescription" = "Chicken Game will use bluetooth peripheral";
|
||||
"NSCalendarsUsageDescription" = "Chicken Game will use calendar";
|
||||
"NSCameraUsageDescription" = "Chicken Game will use camera";
|
||||
"NSPhotoLibraryUsageDescription" = "Chicken Game will use photo library";
|
||||
"NSPhotoLibraryAddUsageDescription" = "Chicken Game will add photos to your photo library";
|
||||
"NSLocationAlwaysAndWhenInUseUsageDescription" = "Chicken Game will use your location";
|
||||
"NSLocationWhenInUseUsageDescription" = "Chicken Game will use your location when use the app";
|
||||
"NSLocationAlwaysUsageDescription" = "Chicken Game will always use your location";
|
||||
"NSMicrophoneUsageDescription" = "Chicken Game will use your microphone";
|
||||
"NSUserTrackingUsageDescription" = "This only uses device info for less annoying, more relevant ads";
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 997ec64d5467ae6419c1148feb55192e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d9f20bf5b1c4b413a8199157c232e402
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,13 +0,0 @@
|
|||
/* Localized versions of Info.plist keys */
|
||||
"CFBundleDisplayName" = "尖叫吧!小鸡仔!";
|
||||
"CFBundleName" = "尖叫吧!小鸡仔!";
|
||||
"NSBluetoothPeripheralUsageDescription" = "尖叫吧!小鸡仔! 将会使用蓝牙设备";
|
||||
"NSCalendarsUsageDescription" = "尖叫吧!小鸡仔! 将会使用日历";
|
||||
"NSCameraUsageDescription" = "尖叫吧!小鸡仔! 将会使用相机";
|
||||
"NSPhotoLibraryUsageDescription" = "尖叫吧!小鸡仔! 将会使用相册";
|
||||
"NSPhotoLibraryAddUsageDescription" = "尖叫吧!小鸡仔! 将会添加照片到您的相册";
|
||||
"NSLocationAlwaysAndWhenInUseUsageDescription" = "尖叫吧!小鸡仔! 将使用你的位置";
|
||||
"NSLocationWhenInUseUsageDescription" = "尖叫吧!小鸡仔! 将在应用运行期间使用你的位置";
|
||||
"NSLocationAlwaysUsageDescription" = "尖叫吧!小鸡仔! 将一直使用你的位置";
|
||||
"NSMicrophoneUsageDescription" = "尖叫吧!小鸡仔! 将使用你的麦克风";
|
||||
"NSUserTrackingUsageDescription" = "该标识符将用于向您投放个性化广告";
|
|
@ -1,7 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 11c01c2681a51ef4984c1dc90d513b2b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4210b923afec52f488fcbd1c6e24322e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
Before Width: | Height: | Size: 73 KiB |
|
@ -1,92 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e57fde9689a004095bf00de934b4c365
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
Before Width: | Height: | Size: 217 KiB |
|
@ -1,92 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cdd1a297ce7c6405289c685edafb3fb5
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 877284013860f4cc0b95afb6477dee6a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
Before Width: | Height: | Size: 101 KiB |
|
@ -1,92 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b06679d0a0ee244f4a240cd688a39f4f
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
Before Width: | Height: | Size: 104 KiB |
|
@ -1,92 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1c575a920bd1843e0828854e1e0edfae
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 00fdedd853f9b4bd8b2bab71a5f31ac0
|
||||
guid: 94e43f1e6266b401c9f7531a8c413ab0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
|
@ -0,0 +1,93 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 0}
|
||||
m_Name: Settings
|
||||
m_EditorClassIdentifier: Assembly-CSharp-firstpass:GameAnalyticsSDK.Setup:Settings
|
||||
TotalMessagesSubmitted: 0
|
||||
TotalMessagesFailed: 0
|
||||
DesignMessagesSubmitted: 0
|
||||
DesignMessagesFailed: 0
|
||||
QualityMessagesSubmitted: 0
|
||||
QualityMessagesFailed: 0
|
||||
ErrorMessagesSubmitted: 0
|
||||
ErrorMessagesFailed: 0
|
||||
BusinessMessagesSubmitted: 0
|
||||
BusinessMessagesFailed: 0
|
||||
UserMessagesSubmitted: 0
|
||||
UserMessagesFailed: 0
|
||||
CustomArea:
|
||||
gameKey: []
|
||||
secretKey: []
|
||||
Build: []
|
||||
SelectedPlatformOrganization: []
|
||||
SelectedPlatformStudio: []
|
||||
SelectedPlatformGame: []
|
||||
SelectedPlatformGameID:
|
||||
SelectedOrganization:
|
||||
SelectedStudio:
|
||||
SelectedGame:
|
||||
NewVersion:
|
||||
Changes:
|
||||
SignUpOpen: 1
|
||||
StudioName:
|
||||
GameName:
|
||||
OrganizationName:
|
||||
OrganizationIdentifier:
|
||||
EmailGA:
|
||||
IntroScreen: 1
|
||||
InfoLogEditor: 1
|
||||
InfoLogBuild: 1
|
||||
VerboseLogBuild: 0
|
||||
UseManualSessionHandling: 0
|
||||
SendExampleGameDataToMyGame: 0
|
||||
UseIMEI: 0
|
||||
InternetConnectivity: 0
|
||||
CustomDimensions01: []
|
||||
CustomDimensions02: []
|
||||
CustomDimensions03: []
|
||||
ResourceItemTypes: []
|
||||
ResourceCurrencies: []
|
||||
LastCreatedGamePlatform: 0
|
||||
Platforms:
|
||||
CurrentInspectorState: 0
|
||||
ClosedHints:
|
||||
DisplayHints: 0
|
||||
DisplayHintsScrollState: {x: 0, y: 0}
|
||||
Logo: {fileID: 0}
|
||||
UpdateIcon: {fileID: 0}
|
||||
InfoIcon: {fileID: 0}
|
||||
DeleteIcon: {fileID: 0}
|
||||
GameIcon: {fileID: 0}
|
||||
HomeIcon: {fileID: 0}
|
||||
InstrumentIcon: {fileID: 0}
|
||||
QuestionIcon: {fileID: 0}
|
||||
UserIcon: {fileID: 0}
|
||||
AmazonIcon: {fileID: 0}
|
||||
GooglePlayIcon: {fileID: 0}
|
||||
iosIcon: {fileID: 0}
|
||||
macIcon: {fileID: 0}
|
||||
windowsPhoneIcon: {fileID: 0}
|
||||
UsePlayerSettingsBuildNumber: 0
|
||||
SubmitErrors: 1
|
||||
NativeErrorReporting: 0
|
||||
MaxErrorCount: 10
|
||||
SubmitFpsAverage: 1
|
||||
SubmitFpsCritical: 1
|
||||
IncludeGooglePlay: 1
|
||||
FpsCriticalThreshold: 20
|
||||
FpsCirticalSubmitInterval: 1
|
||||
PlatformFoldOut:
|
||||
CustomDimensions01FoldOut: 0
|
||||
CustomDimensions02FoldOut: 0
|
||||
CustomDimensions03FoldOut: 0
|
||||
ResourceItemTypesFoldOut: 0
|
||||
ResourceCurrenciesFoldOut: 0
|
|
@ -1,7 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3d87280b481704a97aa535b847aaf582
|
||||
TextScriptImporter:
|
||||
guid: 7beaab0005a8c45b985ed3834b49f6b5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -37,12 +37,11 @@ public partial class Const
|
|||
{
|
||||
public static string UnlockSound = "sound_unlock";
|
||||
public static string UnlockLevel = "level_unlock";
|
||||
public static string EndSkip = "end_skip";
|
||||
|
||||
public static string GamingSelect = "gaming_select";
|
||||
public static string EndRetry = "end_game_retry";
|
||||
public static string EndNext = "end_game_next";
|
||||
public static string EndSelect = "end_game_select";
|
||||
|
||||
public static string EndSkip = "end_skip";
|
||||
}
|
||||
}
|
|
@ -25,8 +25,8 @@ public class GameLogic : MonoBehaviour
|
|||
|
||||
mUIGame.DelPlay = PlayFilm;
|
||||
|
||||
ToukaStageCommonEvent.Instance.StageStartEvent(PlayerData.Instance.CurrentLevel);
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.StartGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.NotifyGameStart(PlayerData.Instance.CurrentLevel);
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.StartGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
}
|
||||
|
||||
private void PlayFilm(int[] pSoundOrder)
|
||||
|
@ -66,11 +66,10 @@ public class GameLogic : MonoBehaviour
|
|||
|
||||
UIManager.Instance.CloseUI<PanelGame>();
|
||||
|
||||
ToukaUtils.CheckPassLvAndAdEvent(PlayerData.Instance.CurrentLevel);
|
||||
ToukaStageCommonEvent.Instance.StageTimeEvent(PlayerData.Instance.CurrentLevel);
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.FinishGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
bool tIsWin = true;
|
||||
|
||||
PanelResult tUIResult = UIManager.Instance.OpenUI<PanelResult>();
|
||||
tUIResult.ReviewShowed = !TKGSDKManager.Instance.NotifyGameEnd(PlayerData.Instance.CurrentLevel, tIsWin);
|
||||
bool tHasComplete = PlayerData.Instance.EndingCountOfLevel(PlayerData.Instance.CurrentLevelID) == tLvData.Endings.Count;
|
||||
if (tEndingID >= 0)
|
||||
{
|
||||
|
@ -83,15 +82,13 @@ public class GameLogic : MonoBehaviour
|
|||
PlayerData.Instance.UnlockNewLevel();
|
||||
AudioManager.Instance.PlaySound(AudioClipType.Win);
|
||||
|
||||
ToukaStageCommonEvent.Instance.StageSuccessEvent(PlayerData.Instance.CurrentLevel);
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.GameWin, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
tIsWin = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
AudioManager.Instance.PlaySound(AudioClipType.Lose);
|
||||
|
||||
ToukaStageCommonEvent.Instance.StageFailureEvent(PlayerData.Instance.CurrentLevel);
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.GameLose, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
tIsWin = false;
|
||||
}
|
||||
tUIResult.Init(PlayerData.Instance.CurrentLevelID, tEdData.EndingName, tEdData.IsGoodEnding, PlayerData.Instance.IsNextLevelPassed(), tHasNew, tHasComplete);
|
||||
}
|
||||
|
@ -100,10 +97,12 @@ public class GameLogic : MonoBehaviour
|
|||
AudioManager.Instance.PlaySound(AudioClipType.Lose);
|
||||
tUIResult.Init(PlayerData.Instance.CurrentLevelID, "", false, PlayerData.Instance.IsNextLevelPassed(), false, true);
|
||||
|
||||
ToukaStageCommonEvent.Instance.StageFailureEvent(PlayerData.Instance.CurrentLevel);
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.GameLose, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
tIsWin = false;
|
||||
}
|
||||
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.FinishGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(tIsWin ? Const.AdsEvent.GameWin : Const.AdsEvent.GameLose, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
|
||||
tUIResult.DelAgain = PlayAgain;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,31 +9,7 @@ public class InitLogic : MonoBehaviour
|
|||
{
|
||||
Application.targetFrameRate = 60;
|
||||
|
||||
ToukaSDKManager.Instance.initAnalytics();
|
||||
ToukaSDKManager.Instance.initAdsSDK();
|
||||
|
||||
#if UNITY_EDITOR
|
||||
EnterGame();
|
||||
#elif IOS_CN
|
||||
TGTools.Instance.onAgreeHander += ShowAntiAddiction;
|
||||
TGTools.Instance.ShowUserAgreementView("卡通剧情", "8", "https://www.toukagame.com/PrivacyPolicy.html", "https://toukagame.com/agreement.html");
|
||||
#endif
|
||||
}
|
||||
|
||||
private void ShowAntiAddiction()
|
||||
{
|
||||
TGTools.Instance.onAgreeHander -= ShowAntiAddiction;
|
||||
|
||||
ToukaUtils.InitTenjinFirst();
|
||||
|
||||
TGiOSAdManager.Instance.onAntiSuccessHander += AntiSucceed;
|
||||
TGiOSAdManager.Instance.ShowAntiView();
|
||||
}
|
||||
|
||||
private void AntiSucceed()
|
||||
{
|
||||
TGiOSAdManager.Instance.onAntiSuccessHander -= AntiSucceed;
|
||||
EnterGame();
|
||||
TKGSDKManager.Instance.InitSDK(EnterGame);
|
||||
}
|
||||
|
||||
private void EnterGame()
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fca17a851778e4fc098dcc4ee7ea79be
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,111 +0,0 @@
|
|||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class NativeAd : MonoBehaviour
|
||||
{
|
||||
protected static RectTransform s_NativeAd;
|
||||
private static NativeAd s_instance;
|
||||
public static NativeAd Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (s_instance == null)
|
||||
{
|
||||
Debug.LogError("s_instance == null ");
|
||||
}
|
||||
return s_instance;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Camera uiCamera;
|
||||
|
||||
bool horizontal = true;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
s_instance = this;
|
||||
|
||||
}
|
||||
public void ShowNativeAd()
|
||||
{
|
||||
if (ToukaAdManager.Instance.IsReadyNative)
|
||||
{
|
||||
ToukaAdManager.Instance.ShowNative(GetX(), GetY(), GetWidth(), GetHeight());
|
||||
}
|
||||
}
|
||||
//由于loadnative 函数有个问题,比如多个位置多个不同尺寸的native。目前只能处理一个尺寸,所以设置了firstFlg,位置宽高得到一次即可。
|
||||
static bool firstFlg = true;
|
||||
static float m_width;
|
||||
static float m_height;
|
||||
static float m_x;
|
||||
static float m_y;
|
||||
public float GetWidth()
|
||||
{
|
||||
FirstGetWAndH();
|
||||
|
||||
return m_width;
|
||||
}
|
||||
public float GetHeight()
|
||||
{
|
||||
FirstGetWAndH();
|
||||
return m_height;
|
||||
}
|
||||
public float GetX()
|
||||
{
|
||||
FirstGetWAndH();
|
||||
return m_x;
|
||||
}
|
||||
public float GetY()
|
||||
{
|
||||
FirstGetWAndH();
|
||||
return m_y;
|
||||
}
|
||||
|
||||
void FirstGetWAndH()
|
||||
{
|
||||
if (firstFlg)
|
||||
{
|
||||
if(uiCamera==null)
|
||||
{
|
||||
uiCamera = GameObject.Find("Main Camera").GetComponent<Camera>();
|
||||
}
|
||||
Debug.Log("YANGWY "+uiCamera);
|
||||
Vector3 lefttop = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x - GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y + GetComponent<RectTransform>().rect.size.y / 2 * transform.lossyScale.y, transform.position.z));
|
||||
Vector3 rightbottom = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x + GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y - GetComponent<RectTransform>().rect.size.y / 2 * transform.lossyScale.y, transform.position.z));
|
||||
Vector3 picture_zero = uiCamera.WorldToScreenPoint(transform.position);
|
||||
float x = lefttop.x;
|
||||
float y = rightbottom.y;
|
||||
float width = rightbottom.x - lefttop.x;
|
||||
float height = Mathf.Abs(rightbottom.y - lefttop.y);
|
||||
y = Screen.height - (picture_zero.y + height / 2);
|
||||
if (horizontal)
|
||||
{
|
||||
if (height > width)
|
||||
{
|
||||
height = width;
|
||||
}
|
||||
if (width > height * 1.2f)
|
||||
{
|
||||
x += (width - (height * 1.2f)) / 2;
|
||||
width = height * 1.2f;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
m_x = x;
|
||||
m_y = y;
|
||||
m_width = width;
|
||||
m_height = height;
|
||||
firstFlg = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,758 +0,0 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using Touka.GameLogic;
|
||||
|
||||
public partial class ToukaAdManager : ToukaSingletonMonoBehaviour<ToukaAdManager>
|
||||
{
|
||||
/// <summary>
|
||||
/// 标明当前界面是否可以显示banner
|
||||
///
|
||||
/// banner load成功,如果当前可显示banner,就会直接显示出来
|
||||
/// </summary>
|
||||
public static bool isCurrCanShowBanner = true;
|
||||
|
||||
#region Consts
|
||||
private const int RETRY_TIMES_COUNT = 3; // 广告重试次数
|
||||
#endregion
|
||||
|
||||
private int m_bannerRetryTimes = RETRY_TIMES_COUNT; // bnner重试次数
|
||||
private int m_intersRetryTimes = RETRY_TIMES_COUNT; // 插屏重试次数
|
||||
private int m_videoRetryTimes = RETRY_TIMES_COUNT; // 激励视频重试次数
|
||||
private int m_nativeRetryTimes = RETRY_TIMES_COUNT; // native重试次数
|
||||
|
||||
private bool m_noAds = false; // 是否有广告 true:没广告(除激励视频外) false:有广告 - 用于购买去广告后
|
||||
private bool m_initialized = false;
|
||||
|
||||
public float NativeWidth = 0f; // native 宽
|
||||
public float NativeHeight = 0f; // native 高
|
||||
|
||||
private IToukaAdInterface toukaAds;
|
||||
|
||||
/// <summary>
|
||||
/// init
|
||||
/// </summary>
|
||||
public void Init () {
|
||||
|
||||
if (StaticOtherConfig.IsDebugLog)
|
||||
{
|
||||
Debug.unityLogger.logEnabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.unityLogger.logEnabled = false;
|
||||
}
|
||||
|
||||
if (m_initialized) return;
|
||||
m_initialized = true;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
|
||||
m_noAds = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.HasRemoveAds) != 0;
|
||||
|
||||
NativeWidth = float.Parse(ToukaUtils.GetPlayerPrefsStringByKey(StaticStringsPlayerPrefs.NativeWidthSaved, "0"));
|
||||
NativeHeight = float.Parse(ToukaUtils.GetPlayerPrefsStringByKey(StaticStringsPlayerPrefs.NativeHeightSaved, "0"));
|
||||
|
||||
toukaAds = ToukaSDKAdapter.Instance;
|
||||
|
||||
// 初始化广告id,设置listener
|
||||
toukaAds.Init();
|
||||
|
||||
Debug.Log("[ToukaAdManager] before loadads.");
|
||||
StartCoroutine(LoadAds());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// load ads
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerator LoadAds()
|
||||
{
|
||||
Debug.Log("[ToukaAdManager] IEnumerator LoadAds.");
|
||||
|
||||
if (StaticStringsKey.BannerSwitch)
|
||||
{
|
||||
Debug.Log("[ToukaAdManager] 初始化banner");
|
||||
LoadBanner();
|
||||
|
||||
yield return new WaitForSeconds(2);
|
||||
}
|
||||
|
||||
if (StaticStringsKey.RewardSwitch)
|
||||
{
|
||||
Debug.Log("[ToukaAdManager] 初始化激励视频");
|
||||
LoadVideo();
|
||||
|
||||
yield return new WaitForSeconds(2);
|
||||
}
|
||||
|
||||
if (StaticStringsKey.InterSwitch)
|
||||
{
|
||||
Debug.Log("[ToukaAdManager] 初始化插屏");
|
||||
LoadInterstitial();
|
||||
|
||||
yield return new WaitForSeconds(2);
|
||||
}
|
||||
|
||||
if (StaticStringsKey.NativeSwitch)
|
||||
{
|
||||
Debug.Log("[ToukaAdManager] 初始化native");
|
||||
LoadNative();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// refresh remove ads
|
||||
/// </summary>
|
||||
public void RefreshVIPStatus()
|
||||
{
|
||||
m_noAds = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.HasRemoveAds) != 0;
|
||||
if (m_noAds)
|
||||
{
|
||||
HideBanner(true);
|
||||
}
|
||||
|
||||
Debug.Log("[ToukaAdManager] 购买去广告成功,告诉SDK不再显示开屏!!");
|
||||
}
|
||||
|
||||
#region banner
|
||||
|
||||
/// <summary>
|
||||
/// show banner
|
||||
/// </summary>
|
||||
public void ShowBanner()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
if (!StaticStringsKey.BannerSwitch)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Log("in ToukaAdManager, ShowBanner.");
|
||||
if (m_noAds) {
|
||||
Debug.Log ("Touka: VIP don't show banner");
|
||||
toukaAds.RemoveBanner (true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isCurrCanShowBanner)
|
||||
{
|
||||
Debug.Log("Touka: this view cannot show banner");
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Log ("Touka: Show banner real ");
|
||||
toukaAds.ShowBanner ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// force reload banner
|
||||
/// </summary>
|
||||
public void ForceReloadBanner()
|
||||
{
|
||||
Debug.Log("Touka: ForceReloadBanner");
|
||||
if (!StaticStringsKey.BannerSwitch)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LoadBanner();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hides the banner.
|
||||
/// </summary>
|
||||
/// <param name="_clean">true:remove false:hide</param>
|
||||
public void HideBanner(bool _clean)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
Debug.Log("in ToukaAdManager, HideBanner, _clean:" + _clean);
|
||||
|
||||
if (!StaticStringsKey.BannerSwitch)
|
||||
{
|
||||
return;
|
||||
}
|
||||
toukaAds.RemoveBanner(_clean);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// isReady Banner
|
||||
/// </summary>
|
||||
public bool IsReadyBanner
|
||||
{
|
||||
get
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return true;
|
||||
#endif
|
||||
return toukaAds.IsReadyBanner();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region 插屏 Interstitial
|
||||
/// <summary>
|
||||
/// show iv
|
||||
/// </summary>
|
||||
/// <param name="callback"></param>
|
||||
/// <param name="_interId"></param>
|
||||
/// <param name="_extraParam"></param>
|
||||
public void ShowInterstitial (Action<ToukaIntersitialStatus> callback, string _extraParam = "") {
|
||||
|
||||
#if UNITY_EDITOR
|
||||
Debug.Log("[ToukaAdManager] Show Interstitial call");
|
||||
if (callback != null) callback(ToukaIntersitialStatus.FAIL);
|
||||
return;
|
||||
#endif
|
||||
|
||||
if (m_noAds)
|
||||
{
|
||||
Debug.Log("[ToukaAdManager] VIP don't show interstitial");
|
||||
if (callback != null) callback(ToukaIntersitialStatus.FAIL);
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Log("[ToukaAdManager] Show Interstitial ");
|
||||
|
||||
if (toukaAds.IsReadyIntersitial ()) {
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_iv_success);
|
||||
toukaAds.ShowIntersitial((status) => {
|
||||
if (status == ToukaIntersitialStatus.CLOSE || status == ToukaIntersitialStatus.FAIL)
|
||||
{
|
||||
AudioAdaper.Reset();
|
||||
if (callback != null) callback(status); // 回调改到这里了
|
||||
AudioAdaper.SetGameSound(); // 恢复原游戏声音状态
|
||||
LoadInterstitial();
|
||||
if (status == ToukaIntersitialStatus.FAIL) // 如果是失败回调,就做失败打点
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_iv_ad_show_failed, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _extraParam } });
|
||||
}
|
||||
}
|
||||
else if (status == ToukaIntersitialStatus.SHOW)
|
||||
{
|
||||
AudioAdaper.Pause();
|
||||
Debug.Log("[ToukaAdManager] UMENG 插屏SHOW上报");
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_iv_ad_show, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _extraParam } });
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_ivrv_ad_show);
|
||||
|
||||
CheckIn24UploadToConversionValue();
|
||||
IncreateVideoAndIntersitialShowCount(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
if (callback != null) callback(ToukaIntersitialStatus.FAIL);
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_iv_failure);
|
||||
LoadInterstitial();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// isReady iv
|
||||
/// </summary>
|
||||
/// <param name="_interId"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsReadyIntersitial()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return false;
|
||||
#endif
|
||||
bool isReadyInter = toukaAds.IsReadyIntersitial();
|
||||
Debug.Log("[ToukaAdManager] isReadyInter : " + isReadyInter);
|
||||
return isReadyInter;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 激励视频 RewardVideo
|
||||
|
||||
/// <summary>
|
||||
/// show video
|
||||
/// </summary>
|
||||
/// <param name="_callback"></param>
|
||||
/// <param name="_videoPlace"></param>
|
||||
/// <returns></returns>
|
||||
public bool ShowVideo(Action<ToukaVideoStatus> _callback, ToukaVideoPlace _videoPlace)
|
||||
{
|
||||
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_ad_button_click, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
|
||||
#if UNITY_EDITOR
|
||||
_callback(ToukaVideoStatus.SUCCESS);
|
||||
return true;
|
||||
#endif
|
||||
if (toukaAds.IsReadyVideo())
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_rv_success, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
|
||||
toukaAds.ShowVideo((status) =>
|
||||
{
|
||||
if (status == ToukaVideoStatus.CLOSE)
|
||||
{
|
||||
AudioAdaper.SetGameSound(); // 恢复原游戏声音状态
|
||||
LoadVideo();
|
||||
}
|
||||
if (status == ToukaVideoStatus.SHOW)
|
||||
{
|
||||
AudioAdaper.Pause();
|
||||
// 播激励视频上报打点
|
||||
Debug.Log("UMENG 播激励视频上报打点");
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_rv_ad_show, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_ivrv_ad_show);
|
||||
CheckIn24UploadToConversionValue();
|
||||
IncreateVideoAndIntersitialShowCount(true);
|
||||
//Time.timeScale = 0.0f;
|
||||
}
|
||||
if (status == ToukaVideoStatus.CANCEL)
|
||||
{
|
||||
|
||||
}
|
||||
if (status == ToukaVideoStatus.FAIL)
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_rv_ad_show_fail, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
|
||||
}
|
||||
if (status == ToukaVideoStatus.SUCCESS)
|
||||
{
|
||||
|
||||
}
|
||||
if (_callback != null) _callback(status);
|
||||
|
||||
});
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_callback != null) _callback(ToukaVideoStatus.FAIL);
|
||||
|
||||
Debug.Log("Touka: Don't show Video for hasAdReady is NO");
|
||||
//PopupTipsPanel.PopupTips(LocalizationManager.GetTermTranslation("1045"));
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_isready_rv_failure, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _videoPlace.ClickPlace } });
|
||||
|
||||
LoadVideo();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// isReady RV
|
||||
/// </summary>
|
||||
public bool IsReadyVideo
|
||||
{
|
||||
get
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return true;
|
||||
#endif
|
||||
if (toukaAds.IsReadyVideo())
|
||||
{
|
||||
Debug.Log("[ToukaAdManager] IsReadyVideo = true. ");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadVideo();
|
||||
Debug.Log("[ToukaAdManager] IsReadyVideo = false. ");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region native
|
||||
/// <summary>
|
||||
/// isReady Native
|
||||
/// </summary>
|
||||
public bool IsReadyNative
|
||||
{
|
||||
get
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return false;
|
||||
#endif
|
||||
return toukaAds.IsReadyNative();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// show native
|
||||
/// </summary>
|
||||
/// <param name="x"></param>
|
||||
/// <param name="y"></param>
|
||||
/// <param name="width"></param>
|
||||
/// <param name="height"></param>
|
||||
/// <returns></returns>
|
||||
public bool ShowNative(float x, float y, float width, float height)
|
||||
{
|
||||
Debug.Log("ShowNative()");
|
||||
#if UNITY_EDITOR
|
||||
return false;
|
||||
#endif
|
||||
Debug.Log("[ToukaAdManager] ShowNative with frame, before isReadyNative");
|
||||
if (m_noAds)
|
||||
{
|
||||
Debug.Log("Touka: VIP don't ShowNative");
|
||||
toukaAds.RemoveNative(true);
|
||||
return false;
|
||||
}
|
||||
if (IsReadyNative)
|
||||
{
|
||||
Debug.Log("Touka: ShowNative, x : " + x + " , y : " + y + " , width : " + width + " , height : " + height);
|
||||
toukaAds.ShowNative(x, y, width, height);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadNative();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// set native bounds first
|
||||
/// </summary>
|
||||
/// <param name="width"></param>
|
||||
/// <param name="height"></param>
|
||||
public void SetNativeBoundsFist(float width, float height)
|
||||
{
|
||||
if (ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeWidth, 0) && ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeHeight, 0))
|
||||
{
|
||||
Debug.Log("inner ---- SetNativeBoundsFist, width : " + width + " , height : " + height);
|
||||
ToukaAdManager.Instance.NativeWidth = width;
|
||||
ToukaAdManager.Instance.NativeHeight = height;
|
||||
|
||||
ToukaUtils.SavePlayerPrefsStringByKeyValue(StaticStringsPlayerPrefs.NativeWidthSaved, ToukaAdManager.Instance.NativeWidth.ToString());
|
||||
ToukaUtils.SavePlayerPrefsStringByKeyValue(StaticStringsPlayerPrefs.NativeHeightSaved, ToukaAdManager.Instance.NativeHeight.ToString());
|
||||
|
||||
ToukaAdManager.Instance.LoadNative();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// hide native
|
||||
/// </summary>
|
||||
/// <param name="_clean"></param>
|
||||
public void HideNative(bool _clean)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
if (toukaAds != null)
|
||||
{
|
||||
toukaAds.RemoveNative(_clean);
|
||||
if(_clean ==false ){
|
||||
LoadNative();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Load & Reload
|
||||
|
||||
/// <summary>
|
||||
/// load banner
|
||||
/// </summary>
|
||||
public void LoadBanner()
|
||||
{
|
||||
Debug.Log ("Touka: LoadBanner");
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
if (!StaticStringsKey.BannerSwitch)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (Application.internetReachability != NetworkReachability.NotReachable)
|
||||
{
|
||||
Debug.Log("start to load banner");
|
||||
toukaAds.LoadBanner((success) => {
|
||||
if (success)
|
||||
{
|
||||
Debug.Log("in ToukaAdManager, loadBanner. success");
|
||||
m_bannerRetryTimes = RETRY_TIMES_COUNT;
|
||||
if (isCurrCanShowBanner)
|
||||
{
|
||||
Debug.Log("可以显示banner");
|
||||
ShowBanner();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("load banner fail");
|
||||
ReLoadBanner();
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Touka: Don't load banner for NetworkReachability.NotReachable");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// load iv
|
||||
/// </summary>
|
||||
public void LoadInterstitial()
|
||||
{
|
||||
if (Application.internetReachability != NetworkReachability.NotReachable)
|
||||
{
|
||||
toukaAds.LoadInterstitial((success) =>
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
Debug.Log("加载插屏广告成功");
|
||||
m_intersRetryTimes = RETRY_TIMES_COUNT;
|
||||
CancelInvoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("加载插屏广告失败,重新加载:" + m_intersRetryTimes);
|
||||
#if UNITY_IOS
|
||||
ReloadInterstitial();
|
||||
#endif
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Touka: Don't load interstitial for NetworkReachability.NotReachable");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// load rv
|
||||
/// </summary>
|
||||
public void LoadVideo()
|
||||
{
|
||||
if (Application.internetReachability != NetworkReachability.NotReachable)
|
||||
{
|
||||
toukaAds.LoadVideo((success) =>
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
m_videoRetryTimes = RETRY_TIMES_COUNT;
|
||||
}
|
||||
else
|
||||
{
|
||||
ReloadVideo();
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Touka: Don't load video for NetworkReachability.NotReachable");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// load native
|
||||
/// </summary>
|
||||
public void LoadNative()
|
||||
{
|
||||
#if IOS_CN
|
||||
if (Application.internetReachability != NetworkReachability.NotReachable)
|
||||
{
|
||||
|
||||
if(toukaAds != null)
|
||||
{
|
||||
toukaAds.LoadNative((success) =>
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
Debug.Log("native 加载成功");
|
||||
m_nativeRetryTimes = RETRY_TIMES_COUNT;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("native 加载失败");
|
||||
ReloadNative();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Touka: Don't load native for NetworkReachability.NotReachable");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// reload banner
|
||||
/// </summary>
|
||||
private void ReLoadBanner()
|
||||
{
|
||||
if (!StaticStringsKey.BannerSwitch)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Debug.Log("Touka: ReLoadBanner times :" + m_bannerRetryTimes);
|
||||
if (Application.internetReachability != NetworkReachability.NotReachable)
|
||||
{
|
||||
if (m_bannerRetryTimes > 0)
|
||||
{
|
||||
m_bannerRetryTimes--;
|
||||
Debug.Log("has times count, go on load again");
|
||||
LoadBanner();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("no times count, don't load again");
|
||||
m_bannerRetryTimes = RETRY_TIMES_COUNT;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Touka: Don't Reload banner for NetworkReachability.NotReachable");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// reload video
|
||||
/// </summary>
|
||||
private void ReloadVideo()
|
||||
{
|
||||
Debug.Log("Touka: ReLoadVideo, times : " + m_videoRetryTimes);
|
||||
if (Application.internetReachability != NetworkReachability.NotReachable)
|
||||
{
|
||||
if (m_videoRetryTimes > 0)
|
||||
{
|
||||
m_videoRetryTimes--;
|
||||
LoadVideo();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_videoRetryTimes = RETRY_TIMES_COUNT;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Touka: Don't Reload video for NetworkReachability.NotReachable");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// reload iv
|
||||
/// </summary>
|
||||
private void ReloadInterstitial()
|
||||
{
|
||||
Debug.Log("Touka: ReLoadInterstitial, times:" + m_intersRetryTimes);
|
||||
if (m_intersRetryTimes > 0)
|
||||
{
|
||||
m_intersRetryTimes--;
|
||||
LoadInterstitial();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_intersRetryTimes = RETRY_TIMES_COUNT;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// reload native
|
||||
/// </summary>
|
||||
private void ReloadNative()
|
||||
{
|
||||
Debug.Log("Touka: ReloadNative. times : " + m_nativeRetryTimes);
|
||||
if (m_nativeRetryTimes > 0)
|
||||
{
|
||||
m_nativeRetryTimes--;
|
||||
LoadNative();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_nativeRetryTimes = RETRY_TIMES_COUNT;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Utils below
|
||||
|
||||
// Utils below ////////////////////////////////////////////////////////////////
|
||||
|
||||
/// <summary>
|
||||
/// 判断 插屏+激励视频 总次数,是否达到了上报总次数
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private bool IncreateVideoAndIntersitialShowCount(bool _video)
|
||||
{
|
||||
if (!ToukaUtilsInner.Instance.isFirstDayLogin) // 非首日登录
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
string playerPrefsKey = StaticStringsPlayerPrefs.IntersitialShowCount;
|
||||
if (_video)
|
||||
{
|
||||
playerPrefsKey = StaticStringsPlayerPrefs.VideoShowCount;
|
||||
}
|
||||
|
||||
// 记录 插屏/激励视频 展示次数
|
||||
var showCount = ToukaUtils.GetPlayerPrefsIntByKey(playerPrefsKey);
|
||||
ToukaUtils.SavePlayerPrefsIntByKeyValue(playerPrefsKey, showCount + 1);
|
||||
|
||||
// 读取 插屏 + 激励视频 总次数
|
||||
var videoCount = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.VideoShowCount);
|
||||
var intersitialCount = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.IntersitialShowCount);
|
||||
|
||||
Debug.Log("激励视频+插屏次数:" + (videoCount + intersitialCount) + ", rv onlineCount : " + StaticOnlineParams.NewUserRVCountOnlineParams.DefaultValue + " , iv onlineCount : " + StaticOnlineParams.NewUserAdsCountOnlineParams.DefaultValue);
|
||||
|
||||
//if (videoCount >= int.Parse(StaticOnlineParams.NewUserRVCountOnlineParams.DefaultValue))
|
||||
//{
|
||||
// if (ToukaUtils.IfFirstCheckPlayerPrefs(StaticStringsPlayerPrefs.TKInner_HasTenjinUploadRVCount))
|
||||
// {
|
||||
// Debug.Log(string.Format("看激励视频达到{0}次,上报tenjin. ", videoCount));
|
||||
// //ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_NewUserRVCount); // 暂时没要求上报了 // 上报新用户观看激励视频次数
|
||||
// }
|
||||
//}
|
||||
|
||||
if ((videoCount + intersitialCount) >= int.Parse(StaticOnlineParams.NewUserAdsCountOnlineParams.DefaultValue))
|
||||
{
|
||||
if (ToukaUtils.IfFirstCheckPlayerPrefs(StaticStringsPlayerPrefs.TKInner_HasTenjinUploadADSCount))
|
||||
{
|
||||
Debug.Log(string.Format("看视频广告达到{0}次,上报tenjin. ", videoCount + intersitialCount));
|
||||
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_TKInner_NewUserAdsCount);
|
||||
}
|
||||
}
|
||||
|
||||
return videoCount + intersitialCount >= int.Parse(StaticOnlineParams.NewUserAdsCountOnlineParams.DefaultValue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// iOS 14要求,24h 内新安装用户 有观看 插屏/激励视频, 则上报。
|
||||
/// </summary>
|
||||
private void CheckIn24UploadToConversionValue()
|
||||
{
|
||||
Debug.Log("CheckIn24UploadToConversionValue");
|
||||
|
||||
if(ToukaUtils.GetPlayerPrefsIntByKey("Has24UploadToConversionValue") == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (ToukaUtils.isNewUser())
|
||||
{
|
||||
Debug.Log("UpdateConversionValue 000011");
|
||||
#if !NO_SDK
|
||||
TGiOSAdManager.Instance.UpdateConversionValue("000011");
|
||||
#endif
|
||||
ToukaUtils.SavePlayerPrefsIntByKeyValue("Has24UploadToConversionValue", 1);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
|
@ -1,174 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.SceneManagement;
|
||||
using Touka.GameLogic;
|
||||
|
||||
public class ToukaInterstitialTimer : ToukaSingletonMonoBehaviour<ToukaInterstitialTimer>
|
||||
{
|
||||
private int IV1Times = 0;
|
||||
private int IV2Times = 0;
|
||||
|
||||
#region 插屏时间
|
||||
float startedTime = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 是否达到了可展示插屏的条件
|
||||
///
|
||||
/// 条件:前N次触达插屏点不展示插屏。达到前N次后,第N+1次展示插屏,后续每隔M次展示一次插屏。插屏之间间隔不少于15s。
|
||||
///
|
||||
/// 1. 前N次触达不弹出插屏; 在线参数-IV1_PreTimesN_OnlineParam
|
||||
/// 2. 后续每隔M关弹出一次插屏; 在线参数-IV1_PerM_OnlineParam
|
||||
/// 3. 插屏与上次间隔时间不少于15s; 在线参数-IV1_MinTimeL_OnlineParam
|
||||
/// 三个条件均允许在线参数控制。
|
||||
///
|
||||
/// *IVType 区分不同点位插屏的条件控制。如果整个游戏,只有一种条件控制,那都用IV1就可以。如果某些点位,要有第二种条件控制,那对应的点位,传IV2就可以。
|
||||
/// 目前通用封装,只支持两种不同的条件控制。逻辑相同,只是3个条件参数,用不同的在线参数控制。如需多个条件,请自行进行扩展
|
||||
/// </summary>
|
||||
/// <param name="_ivType"> 根据传入 IVType 区分不同插屏条件控制 </param>
|
||||
/// <returns></returns>
|
||||
public bool CanShow(ToukaSDKManager.IVType _ivType)
|
||||
{
|
||||
// 【1】前N次不展示插屏
|
||||
if (!CheckIfReachFirstNTimes(_ivType))
|
||||
{
|
||||
Debug.Log("[ToukaInterstitialTimer]Check 「前N次不展示插屏」 条件是否满足 : False,直接返回。不播插屏。");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 达到N次后,第N+1次,直接展示插屏
|
||||
bool canShowDirectly = false;
|
||||
if(_ivType == ToukaSDKManager.IVType.IV1)
|
||||
{
|
||||
if (ToukaUtils.IfFirstCheckPlayerPrefs(StaticStringsPlayerPrefs.TKInner_HasFirstShowIV1))
|
||||
{
|
||||
canShowDirectly = true;
|
||||
}
|
||||
}else if(_ivType == ToukaSDKManager.IVType.IV2)
|
||||
{
|
||||
if (ToukaUtils.IfFirstCheckPlayerPrefs(StaticStringsPlayerPrefs.TKInner_HasFirstShowIV2))
|
||||
{
|
||||
canShowDirectly = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!canShowDirectly) // 非第N+1次,不能直接展示广告; 【2】要判断是否达到了间隔次数;
|
||||
{
|
||||
int currTimes = 0; // 当前达到的间隔次数
|
||||
int needTimes = 0; // 需要达到的间隔次数
|
||||
|
||||
if (_ivType == ToukaSDKManager.IVType.IV1) // IV1 需要达到的间隔次数
|
||||
{
|
||||
currTimes = ++IV1Times;
|
||||
needTimes = int.Parse(StaticOnlineParams.IV1_PerM_OnlineParam.DefaultValue);
|
||||
}
|
||||
else if (_ivType == ToukaSDKManager.IVType.IV2) // IV2需要达到的间隔次数
|
||||
{
|
||||
currTimes = ++IV2Times;
|
||||
needTimes = int.Parse(StaticOnlineParams.IV2_PerM_OnlineParam.DefaultValue);
|
||||
}
|
||||
|
||||
if (currTimes < needTimes) // 没有达到间隔次数,直接返回
|
||||
{
|
||||
Debug.Log("[ToukaInterstitialTimer] Check 「2次插屏间隔次数」 条件是否满足:False,直接返回。不播插屏。当前次数:"+ currTimes + ", 需要达到次数:" + needTimes);
|
||||
return false;
|
||||
}
|
||||
else // 达到间隔次数了,清空间隔次数,可以直接播插屏广告
|
||||
{
|
||||
if (_ivType == ToukaSDKManager.IVType.IV1)
|
||||
{
|
||||
IV1Times = 0;
|
||||
}
|
||||
else if (_ivType == ToukaSDKManager.IVType.IV2)
|
||||
{
|
||||
IV2Times = 0;
|
||||
}
|
||||
Debug.Log("[ToukaInterstitialTimer]达到间隔次数,可进行最小时间间隔检测。当前次数:" + currTimes + ", 需要达到次数:" + needTimes);
|
||||
}
|
||||
}
|
||||
|
||||
// 【3】判断是否达到最小时间间隔
|
||||
float ivIntervalTime = float.Parse(StaticOnlineParams.IV1_MinTimeL_OnlineParam.DefaultValue); // IV1 最小时间间隔
|
||||
if(_ivType == ToukaSDKManager.IVType.IV2)
|
||||
{
|
||||
ivIntervalTime = float.Parse(StaticOnlineParams.IV2_MinTimeL_OnlineParam.DefaultValue); // IV2 最小时间间隔
|
||||
}
|
||||
|
||||
bool canShowFlg = Time.time - startedTime > ivIntervalTime; // 达到最小间隔时间,可以展示插屏;否则不可以
|
||||
Debug.Log("[ToukaInterstitialTimer] Check 「2次插屏最小间隔时间」 条件是否满足:" + canShowFlg);
|
||||
Debug.Log("[ToukaInterstitialTimer] 判断插屏间隔时间 : " + (Time.time - startedTime) + " , 当前时间:" + Time.time + " , 上次开始时间 :" + startedTime + " ,所需要的间隔时间: " + ivIntervalTime);
|
||||
|
||||
// 可展示插屏,清空累计次数
|
||||
if (canShowFlg)
|
||||
{
|
||||
if (_ivType == ToukaSDKManager.IVType.IV1)
|
||||
{
|
||||
IV1Times = 0;
|
||||
}
|
||||
else if (_ivType == ToukaSDKManager.IVType.IV2)
|
||||
{
|
||||
IV2Times = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return canShowFlg;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检测是否达到N次 - 前N次不弹出插屏广告
|
||||
/// </summary>
|
||||
/// <param name="_ivType"></param>
|
||||
/// <returns></returns>
|
||||
public bool CheckIfReachFirstNTimes(ToukaSDKManager.IVType _ivType)
|
||||
{
|
||||
bool canShow = false;
|
||||
if (_ivType == ToukaSDKManager.IVType.IV1)
|
||||
{
|
||||
int reachTimes01 = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.TKInner_IV1ReachTimes, 0);
|
||||
|
||||
if (reachTimes01 >= int.Parse(StaticOnlineParams.IV1_PreTimesN_OnlineParam.DefaultValue))
|
||||
{
|
||||
Debug.Log("[ToukaInterstitialTimer]插屏 IV1 触达次数够了, reachTimes01 : " + reachTimes01 + " ,需要达到次数:"+ int.Parse(StaticOnlineParams.IV1_PreTimesN_OnlineParam.DefaultValue));
|
||||
canShow = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("[ToukaInterstitialTimer]插屏,iv1, 触达次数不够。当前已触达插屏点次数:" + reachTimes01);
|
||||
}
|
||||
reachTimes01++;
|
||||
ToukaUtils.SavePlayerPrefsIntByKeyValue(StaticStringsPlayerPrefs.TKInner_IV1ReachTimes, reachTimes01);
|
||||
}else if (_ivType == ToukaSDKManager.IVType.IV2)
|
||||
{
|
||||
|
||||
int reachTimes02 = ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.TKInner_IV2ReachTimes, 0);
|
||||
|
||||
if (reachTimes02 >= int.Parse(StaticOnlineParams.IV2_PreTimesN_OnlineParam.DefaultValue))
|
||||
{
|
||||
Debug.Log("[ToukaInterstitialTimer]插屏 IV2 触达次数够了, reachTimes02 : " + reachTimes02);
|
||||
canShow = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("[ToukaInterstitialTimer]插屏,IV2, 触达次数不够。当前已触达插屏点次数:" + reachTimes02);
|
||||
}
|
||||
reachTimes02++;
|
||||
ToukaUtils.SavePlayerPrefsIntByKeyValue(StaticStringsPlayerPrefs.TKInner_IV2ReachTimes, reachTimes02);
|
||||
}
|
||||
|
||||
Debug.Log("[ToukaInterstitialTimer]Check 前N次不弹出插屏广告,是否到达N次了 :" + canShow);
|
||||
return canShow;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始播插屏/激励视频时进行计时
|
||||
/// </summary>
|
||||
public void StartTimer()
|
||||
{
|
||||
startedTime = Time.time;
|
||||
Debug.Log("[ToukaInterstitialTimer] 开始播插屏/激励视频,开始播广告计时:" + startedTime);
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
|
@ -1,495 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using AOT;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 广告SDK内部处理
|
||||
/// </summary>
|
||||
public class ToukaSDKAdapter : IToukaAdInterface
|
||||
{
|
||||
/// <summary>
|
||||
/// banner 位置
|
||||
/// </summary>
|
||||
public enum ToukaBannerAlign:int
|
||||
{
|
||||
BannerCenterBottomAlign = 34,
|
||||
BannerCenterTopAlign = 10,
|
||||
}
|
||||
|
||||
// banner是否已展示
|
||||
private bool m_bannerHasShowed = false;
|
||||
// banner是否已加载
|
||||
private bool m_bannerLoaded = false;
|
||||
|
||||
private System.Action<bool> m_bannerLoadCallback; // banner加载回调
|
||||
private System.Action<bool> m_intersitialLoadCallback; // 插屏加载回调
|
||||
private System.Action<bool> m_videoLoadCallback; // 激励视频加载回调
|
||||
private System.Action<bool> m_nativeLoadCallback; // native加载回调
|
||||
|
||||
private System.Action<ToukaVideoStatus> m_videoShowCallback; // 激励视频展示回调
|
||||
private System.Action<ToukaIntersitialStatus> m_intersitialShowCallback; // 插屏展示回调
|
||||
|
||||
private static ToukaSDKAdapter s_instance;
|
||||
public static ToukaSDKAdapter Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (s_instance == null)
|
||||
{
|
||||
s_instance = new ToukaSDKAdapter();
|
||||
}
|
||||
return s_instance;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// init
|
||||
/// </summary>
|
||||
public void Init()
|
||||
{
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
Debug.Log("[ToukaSDKAdapter] init iOS");
|
||||
ToukaCallbackInit();
|
||||
TGiOSAdManager.Instance.InitSDK(StaticStringsKey.TOUKA_SDK_APPID, StaticStringsKey.TOUKA_SDK_APPKEY);
|
||||
#elif UNITY_ANDROID
|
||||
Debug.Log("[ToukaSDKAdapter] init android");
|
||||
ToukaCallbackInit();
|
||||
TGAndroidAdManager.Instance.InitSDK(StaticStringsKey.TOUKA_SDK_APPID,StaticStringsKey.TOUKA_SDK_APPKEY);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// sdk 回调
|
||||
/// </summary>
|
||||
private void ToukaCallbackInit()
|
||||
{
|
||||
TGUniversalFunc.onSetNativeBannerListener_onAdLoaded += onNativeBannerAdLoaded;
|
||||
TGUniversalFunc.onSetNativeBannerListener_onAdLoadFail += onNativeBannerAdLoadFail;
|
||||
|
||||
TGUniversalFunc.onSetBannerListener_onAdLoaded += onBannerAdLoad;
|
||||
TGUniversalFunc.onSetBannerListener_onAdFailedToLoad += onBannerAdLoadFail;
|
||||
|
||||
TGUniversalFunc.onSetNativeListener_onAdLoaded += onNativeAdLoaded;
|
||||
TGUniversalFunc.onSetNativeListener_onAdFailedToLoad += onNativeAdLoadFail;
|
||||
|
||||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdClosed += onRewardedVideoAdPlayClosed;
|
||||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdFailedToLoad += onRewardedVideoAdLoadFail;
|
||||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdLoaded += onRewardedVideoAdLoaded;
|
||||
TGUniversalFunc.onSetRewardListener_onRewardedVideoAdPlayFail += onRewardedVideoAdPlayFail;
|
||||
TGUniversalFunc.onSetRewardListener_onRewardedVideoStarted += onRewardedVideoAdPlayStart;
|
||||
|
||||
|
||||
TGUniversalFunc.onSetInterstitialListener_onAdClosed += onInterstitialAdClose;
|
||||
TGUniversalFunc.onSetInterstitialListener_onAdFailedToLoad += onInterstitialAdLoadFail;
|
||||
TGUniversalFunc.onSetInterstitialListener_onAdLoaded += onInterstitialAdLoad;
|
||||
TGUniversalFunc.onSetInterstitialListener_onShowFailed += onInterstitialAdFailedToShow;
|
||||
TGUniversalFunc.onSetInterstitialListener_onShowSuccess += onInterstitialAdShow;
|
||||
}
|
||||
|
||||
#region 广告 IsReady 接口
|
||||
|
||||
/// <summary>
|
||||
/// 插屏 IsReady
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsReadyIntersitial()
|
||||
{
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
return TGiOSAdManager.Instance.IsReadyinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||||
#elif UNITY_ANDROID
|
||||
return TGAndroidAdManager.Instance.IsReadyinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 激励视频 IsReady
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsReadyVideo()
|
||||
{
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
return TGiOSAdManager.Instance.IsReadyVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||||
#elif UNITY_ANDROID
|
||||
return TGAndroidAdManager.Instance.IsReadyVideo(StaticStringsKey.TOUKA_SDK_REWARDID) ;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// banner IsReady
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsReadyBanner()
|
||||
{
|
||||
return m_bannerLoaded;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// native IsReady
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsReadyNative()
|
||||
{
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
return TGiOSAdManager.Instance.IsReadNative(StaticStringsKey.TOUKA_SDK_NATIVEID);
|
||||
#elif UNITY_ANDROID
|
||||
return TGAndroidAdManager.Instance.IsReadNative(StaticStringsKey.TOUKA_SDK_NATIVEID) ;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 广告展示 Show 接口
|
||||
/// <summary>
|
||||
/// 展示插屏
|
||||
/// </summary>
|
||||
/// <param name="_callback"> 插屏播放回调 </param>
|
||||
public void ShowIntersitial(Action<ToukaIntersitialStatus> _callback)
|
||||
{
|
||||
m_intersitialShowCallback = _callback;
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
TGiOSAdManager.Instance.Showinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.Showinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 展示激励视频
|
||||
/// </summary>
|
||||
/// <param name="_callback"> 激励视频播放回调 </param>
|
||||
public void ShowVideo(Action<ToukaVideoStatus> _callback)
|
||||
{
|
||||
m_videoShowCallback = _callback;
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
TGiOSAdManager.Instance.ShowVideo (StaticStringsKey.TOUKA_SDK_REWARDID);
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.ShowVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 展示banner
|
||||
/// </summary>
|
||||
public void ShowBanner()
|
||||
{
|
||||
if (m_bannerHasShowed == false)
|
||||
{
|
||||
#if UNITY_IOS
|
||||
#if NORMAL_BANNER
|
||||
TGiOSAdManager.Instance.SetBannerAlign(ToukaBannerAlign.BannerCenterBottomAlign.ToString());
|
||||
TGiOSAdManager.Instance.ShowBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||||
m_bannerHasShowed = true;
|
||||
#elif NATIVE_BANNER
|
||||
TGiOSAdManager.Instance.SetNativeBannerAlign(((int)ToukaBannerAlign.BannerCenterBottomAlign).ToString());
|
||||
TGiOSAdManager.Instance.ShowNativeBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||||
m_bannerHasShowed = true;
|
||||
#endif
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.ShowBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 展示native
|
||||
/// </summary>
|
||||
/// <param name="x"> native x坐标 </param>
|
||||
/// <param name="y"> native y坐标 </param>
|
||||
/// <param name="width"> native width </param>
|
||||
/// <param name="height"> native height </param>
|
||||
public void ShowNative(float x, float y, float width, float height)
|
||||
{
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
TGiOSAdManager.Instance.ShowNative(x, y, width, height, StaticStringsKey.TOUKA_SDK_NATIVEID);
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.ShowNative(x, y, width, height, StaticStringsKey.TOUKA_SDK_NATIVEID);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 广告加载 Load 接口
|
||||
|
||||
/// <summary>
|
||||
/// 加载插屏
|
||||
/// </summary>
|
||||
/// <param name="_callback"></param>
|
||||
public void LoadInterstitial(System.Action<bool> _callback)
|
||||
{
|
||||
m_intersitialLoadCallback = _callback;
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
TGiOSAdManager.Instance.Loadinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.Loadinterstitial(StaticStringsKey.TOUKA_SDK_INTERID);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载激励视频
|
||||
/// </summary>
|
||||
/// <param name="_callback"></param>
|
||||
public void LoadVideo(System.Action<bool> _callback)
|
||||
{
|
||||
m_videoLoadCallback = _callback;
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
TGiOSAdManager.Instance.LoadVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.LoadVideo(StaticStringsKey.TOUKA_SDK_REWARDID);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载banner
|
||||
/// </summary>
|
||||
/// <param name="_callback"></param>
|
||||
public void LoadBanner(System.Action<bool> _callback)
|
||||
{
|
||||
m_bannerLoadCallback = _callback;
|
||||
#if UNITY_IOS
|
||||
#if NORMAL_BANNER
|
||||
TGiOSAdManager.Instance.LoadBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||||
#elif NATIVE_BANNER
|
||||
TGiOSAdManager.Instance.LoadNativeBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||||
#endif
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.LoadBannerWithUnitId(StaticStringsKey.TOUKA_SDK_BANNERID);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加载native
|
||||
/// </summary>
|
||||
/// <param name="_callback"></param>
|
||||
public void LoadNative(System.Action<bool> _callback)
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter] LoadNative -------");
|
||||
m_nativeLoadCallback = _callback;
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
// if (!ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeWidth, 0) && !ToukaUtils.FloatEqual(ToukaAdManager.Instance.NativeHeight, 0))
|
||||
// {
|
||||
Debug.Log("native width, native height != 0, nativeWidth : " + ToukaAdManager.Instance.NativeWidth + " , nativeHeight : " + ToukaAdManager.Instance.NativeHeight);
|
||||
TGiOSAdManager.Instance.LoadNative(StaticStringsKey.TOUKA_SDK_NATIVEID, ToukaAdManager.Instance.NativeWidth, ToukaAdManager.Instance.NativeHeight); // 不需要了,传0就可以
|
||||
// }
|
||||
|
||||
#elif UNITY_ANDROID
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 广告移除 Remove /隐藏 Hide 接口
|
||||
|
||||
/// <summary>
|
||||
/// 移除banner
|
||||
/// </summary>
|
||||
/// <param name="_clean"> true:清除 flse:隐藏</param>
|
||||
public void RemoveBanner(bool _clean)
|
||||
{
|
||||
Debug.Log("in ToukaSDKAdapter, RemoveBanner , _clean : " + _clean);
|
||||
#if UNITY_IOS
|
||||
if (_clean) {
|
||||
Debug.Log("in ToukaSDKAdapter, RemoveBanner ,removeBanner. 01");
|
||||
#if NORMAL_BANNER
|
||||
TGiOSAdManager.Instance.RemoveBanner ();
|
||||
#elif NATIVE_BANNER
|
||||
TGiOSAdManager.Instance.RemoveNativeBanner();
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("in ToukaSDKAdapter, RemoveBanner ,removeBanner. 02");
|
||||
#if NORMAL_BANNER
|
||||
TGiOSAdManager.Instance.HideBanner ();
|
||||
#elif NATIVE_BANNER
|
||||
TGiOSAdManager.Instance.HideNativeBanner();
|
||||
#endif
|
||||
}
|
||||
|
||||
m_bannerHasShowed = false;
|
||||
#elif UNITY_ANDROID
|
||||
TGAndroidAdManager.Instance.HideBanner();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除native
|
||||
/// </summary>
|
||||
/// <param name="_isClean"> true:清除 false:隐藏 </param>
|
||||
public void RemoveNative(bool _isClean)
|
||||
{
|
||||
#if UNITY_IOS && !NO_SDK
|
||||
TGiOSAdManager.Instance.RemoveNative();
|
||||
#elif UNITY_ANDROID
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 广告回调
|
||||
|
||||
#region TKInitListener
|
||||
|
||||
public void initSuccess() {
|
||||
Debug.Log("[ToukaSDKAdapter]: sdk init succ");
|
||||
}
|
||||
|
||||
public void initFail()
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter]: sdk init Fail.");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region InterstitialAdListener
|
||||
|
||||
public void onInterstitialAdClick() { }
|
||||
|
||||
public void onInterstitialAdClose()
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter]: Interstitial ad close.");
|
||||
if (m_intersitialShowCallback != null) m_intersitialShowCallback(ToukaIntersitialStatus.CLOSE);
|
||||
}
|
||||
|
||||
public void onInterstitialAdEndPlayingVideo() { }
|
||||
|
||||
public void onInterstitialAdFailedToPlayVideo() { }
|
||||
|
||||
public void onInterstitialAdLoad()
|
||||
{
|
||||
m_intersitialLoadCallback(true);
|
||||
}
|
||||
|
||||
public void onInterstitialAdLoadFail()
|
||||
{
|
||||
m_intersitialLoadCallback(false);
|
||||
}
|
||||
|
||||
public void onInterstitialAdShow()
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter]: Interstitial ad show.");
|
||||
if (m_intersitialShowCallback != null) m_intersitialShowCallback(ToukaIntersitialStatus.SHOW);
|
||||
}
|
||||
|
||||
public void onInterstitialAdStartPlayingVideo() { }
|
||||
|
||||
public void onInterstitialAdFailedToShow()
|
||||
{
|
||||
if (m_intersitialShowCallback != null) m_intersitialShowCallback(ToukaIntersitialStatus.FAIL);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region RewardedVideoListener
|
||||
|
||||
public void onRewardedVideoAdLoaded () {
|
||||
if(m_videoLoadCallback != null)
|
||||
{
|
||||
m_videoLoadCallback(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void onRewardedVideoAdLoadFail () {
|
||||
if (m_videoLoadCallback != null)
|
||||
{
|
||||
m_videoLoadCallback(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void onRewardedVideoAdPlayStart()
|
||||
{
|
||||
if (m_videoShowCallback != null) m_videoShowCallback(ToukaVideoStatus.SHOW);
|
||||
}
|
||||
|
||||
public void onRewardedVideoAdPlayEnd() { }
|
||||
|
||||
public void onRewardedVideoAdPlayFail()
|
||||
{
|
||||
if (m_videoShowCallback != null) m_videoShowCallback(ToukaVideoStatus.FAIL);
|
||||
}
|
||||
|
||||
public void onRewardedVideoAdPlayClosed(string _isReward)
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter]: reward ad close, isReward : " + _isReward);
|
||||
bool isReward = _isReward == "True";
|
||||
if (m_videoShowCallback != null) m_videoShowCallback(ToukaVideoStatus.CLOSE);
|
||||
if (m_videoShowCallback != null) m_videoShowCallback(isReward ? ToukaVideoStatus.SUCCESS : ToukaVideoStatus.CANCEL);
|
||||
}
|
||||
|
||||
public void onRewardedVideoAdPlayClicked() { }
|
||||
|
||||
#endregion
|
||||
|
||||
#region BannerAdListener
|
||||
public void onAdAutoRefresh() { }
|
||||
|
||||
public void onAdAutoRefreshFail() { }
|
||||
|
||||
public void onAdClick() { }
|
||||
|
||||
public void onAdClose() { }
|
||||
|
||||
public void onAdImpress() { }
|
||||
|
||||
public void onBannerAdLoad()
|
||||
{
|
||||
m_bannerLoadCallback(true);
|
||||
m_bannerLoaded = true;
|
||||
}
|
||||
|
||||
public void onBannerAdLoadFail()
|
||||
{
|
||||
m_bannerLoadCallback(false);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region NativeBannerAdListener
|
||||
public void onNativeBannerAdLoaded()
|
||||
{
|
||||
m_bannerLoadCallback(true);
|
||||
m_bannerLoaded = true;
|
||||
}
|
||||
|
||||
public void onNativeBannerAdLoadFail()
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter] onNativeBannerAdLoadFail.");
|
||||
m_bannerLoadCallback(false);
|
||||
}
|
||||
|
||||
public void onNativeBannerAdImpressed() { }
|
||||
|
||||
public void onNativeBannerAdClicked() { }
|
||||
|
||||
public void onNativeBannerAdAutoRefresh() { }
|
||||
|
||||
public void onNativeBannerAdAutoRefreshFailure() { }
|
||||
|
||||
public void onNativeBannerAdCloseButtonClicked() { }
|
||||
|
||||
public void onNativeAdLoaded()
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter] onNativeAdLoaded ----");
|
||||
if (m_nativeLoadCallback != null)
|
||||
{
|
||||
m_nativeLoadCallback(true);
|
||||
}
|
||||
}
|
||||
|
||||
public void onNativeAdLoadFail()
|
||||
{
|
||||
Debug.Log("[ToukaSDKAdapter] onNativeAdLoadFail ----");
|
||||
if (m_nativeLoadCallback != null)
|
||||
{
|
||||
m_nativeLoadCallback(false);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
|
@ -1,156 +0,0 @@
|
|||
using Touka.GameLogic;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public partial class ToukaSDKManager : ToukaSingletonMonoBehaviour<ToukaSDKManager>
|
||||
{
|
||||
public enum IVType
|
||||
{
|
||||
IV1 = 0,
|
||||
IV2,
|
||||
|
||||
MAX,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化广告
|
||||
///
|
||||
/// 调用时机:进游戏时
|
||||
/// 内部包含进游戏立刻初始化广告的逻辑
|
||||
/// </summary>
|
||||
public void initAdsSDK()
|
||||
{
|
||||
ToukaAdManager.Instance.Init();
|
||||
}
|
||||
|
||||
#region ABOUT ADS INTERFACE
|
||||
|
||||
/// <summary>
|
||||
/// 播放插屏接口
|
||||
/// </summary>
|
||||
/// <param name="adPos"> 点位名称-用于插屏打点事件上报 </param>
|
||||
/// <param name="callback"> 关闭插屏回调-如不需要可传空</param>
|
||||
/// <param name="_ivType"> 插屏条件类型-默认使用IV1 </param>
|
||||
public void PlayInterstitialAd(string adPos = "", Action callback = null, IVType _ivType = IVType.IV1)
|
||||
{
|
||||
#if NO_AD
|
||||
callback();
|
||||
return;
|
||||
#endif
|
||||
// 判断是否达到可展示插屏的条件
|
||||
if (!ToukaInterstitialTimer.Instance.CanShow(_ivType))
|
||||
{
|
||||
Debug.Log("time too short, can't show iv");
|
||||
if (callback != null)
|
||||
{
|
||||
callback();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Log("PlayInterstitialAd");
|
||||
// 播放插屏
|
||||
ToukaAdManager.Instance.ShowInterstitial((ToukaIntersitialStatus obj) => {
|
||||
switch (obj)
|
||||
{
|
||||
case ToukaIntersitialStatus.CLOSE:
|
||||
Debug.Log("close iv");
|
||||
if(callback != null)
|
||||
{
|
||||
callback();
|
||||
}
|
||||
ToukaInterstitialTimer.Instance.StartTimer();
|
||||
break;
|
||||
case ToukaIntersitialStatus.FAIL:
|
||||
Debug.Log("iv show fail");
|
||||
if (callback != null)
|
||||
{
|
||||
callback();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, adPos);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 激励视频
|
||||
/// </summary>
|
||||
/// <param name="adsKey"> 点位名称-用于激励视频打点事件上报 </param>
|
||||
/// <param name="rewardSuccCallback"></param>
|
||||
/// <param name="rewardFailedCallback"></param>
|
||||
public void PlayRewardAd(string adsKey, Action rewardSuccCallback, Action rewardFailedCallback = null)
|
||||
{
|
||||
Debug.Log("PlayRewardAd ----- adsKey:" + adsKey);
|
||||
|
||||
#if NO_AD
|
||||
rewardSuccCallback.Invoke();
|
||||
return;
|
||||
#endif
|
||||
string adPosKey = adsKey;
|
||||
ToukaAdManager.Instance.ShowVideo((ToukaVideoStatus _status) => {
|
||||
Debug.Log("_status : " + _status);
|
||||
|
||||
switch (_status)
|
||||
{
|
||||
case ToukaVideoStatus.CLOSE:
|
||||
{
|
||||
ToukaInterstitialTimer.Instance.StartTimer();
|
||||
}
|
||||
break;
|
||||
case ToukaVideoStatus.SUCCESS:
|
||||
{
|
||||
Debug.Log("RV get reward");
|
||||
if (rewardSuccCallback != null)
|
||||
{
|
||||
rewardSuccCallback.Invoke();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ToukaVideoStatus.CANCEL:
|
||||
case ToukaVideoStatus.FAIL:
|
||||
{
|
||||
Debug.Log("RV not get reward");
|
||||
if (rewardFailedCallback != null)
|
||||
{
|
||||
rewardFailedCallback.Invoke();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}, new ToukaVideoPlace(adPosKey, adPosKey, adPosKey));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// change scene show or hide or reload banner
|
||||
/// </summary>
|
||||
/// <param name="_canShowBanner"></param>
|
||||
public void ShowOrHideBanner(bool _canShowBanner)
|
||||
{
|
||||
if (_canShowBanner)
|
||||
{
|
||||
Debug.Log("这个场景要显示banner");
|
||||
ToukaAdManager.isCurrCanShowBanner = true;
|
||||
ToukaAdManager.Instance.ForceReloadBanner();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("这个场景要隐藏banner");
|
||||
ToukaAdManager.isCurrCanShowBanner = false;
|
||||
ToukaAdManager.Instance.HideBanner(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ShowNative()
|
||||
{
|
||||
NativeAd.Instance.ShowNativeAd();
|
||||
}
|
||||
|
||||
public void RemoveNative()
|
||||
{
|
||||
ToukaAdManager.Instance.HideNative(false);
|
||||
}
|
||||
#endregion
|
||||
}
|
|
@ -1,284 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
using GameAnalyticsSDK;
|
||||
using GameAnalyticsSDK.Events;
|
||||
using UnityEngine;
|
||||
|
||||
using GameAnalyticsSDK.Wrapper;
|
||||
using Touka.GameLogic;
|
||||
|
||||
/// <summary>
|
||||
/// 数据统计类
|
||||
///
|
||||
/// 包含Umeng、GA、Tenjin的初始化及打点;Umeng在线参数初始化;
|
||||
/// ** 需在 StaticStringKey 类里修改对应ID
|
||||
/// </summary>
|
||||
public class ToukaAnalyticsManager : ToukaSingletonMonoBehaviour<ToukaAnalyticsManager>
|
||||
{
|
||||
/// <summary>
|
||||
/// Init
|
||||
/// </summary>
|
||||
public void Init()
|
||||
{
|
||||
Debug.Log("[ToukaAnalyticsManager] Init");
|
||||
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
StaticOnlineParams.Instance.InitData(); // 初始化在线参数列表
|
||||
|
||||
InitUmeng(); // 初始化umeng
|
||||
InitGA(); // 初始化ga
|
||||
InitTenjin(); // 初始化tenjin
|
||||
|
||||
StaticOnlineParams.GetInstance().Init(); // 初始化在线参数
|
||||
|
||||
ToukaUtilsInner.Instance.Check2DaysLogin(); // 检查次日登录
|
||||
ToukaUtilsInner.Instance.SaveFirstLoginTime(); // 记录首次登录游戏时间
|
||||
}
|
||||
|
||||
#region Inits
|
||||
|
||||
/// <summary>
|
||||
/// 初始化Umeng
|
||||
/// </summary>
|
||||
private void InitUmeng()
|
||||
{
|
||||
#if UNITY_IOS
|
||||
TGTools.Instance.onRemoteConfigHandler = GetRemoteConfigOnline;
|
||||
TGTools.Instance.InitSdk(StaticStringsKey.UMENG_APPKEY, StaticStringsKey.UMENG_CHANNELID);
|
||||
Umeng.Analytics.SetLogEnabled(true);
|
||||
#elif UNITY_ANDROID
|
||||
Umeng.Analytics.StartWithAppKeyAndChannelId (StaticStringsKey.UMENG_APPKEY, StaticStringsKey.UMENG_CHANNELID);
|
||||
Umeng.Analytics.SetLogEnabled (false);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Umeng在线参数回调
|
||||
/// </summary>
|
||||
public void GetRemoteConfigOnline()
|
||||
{
|
||||
Debug.Log("[ToukaAnalyticsManager] get remote config from online");
|
||||
|
||||
StaticOnlineParams.Instance.parseGameOnlineConfig();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化GA
|
||||
/// </summary>
|
||||
private void InitGA()
|
||||
{
|
||||
if (UnityEngine.Object.FindObjectOfType(typeof(GameAnalytics)) == null)
|
||||
{
|
||||
GameObject ga = new GameObject();
|
||||
ga.name = "GameAnalytics";
|
||||
ga.transform.parent = transform;
|
||||
ga.AddComponent<GA_SpecialEvents>();
|
||||
ga.AddComponent<GameAnalytics>();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("A GameAnalytics object already exists in this scene - you should never have more than one per scene!");
|
||||
}
|
||||
|
||||
GameAnalytics.Initialize();
|
||||
GA_Wrapper.SetBuild(Application.version);
|
||||
GA_Wrapper.Initialize(StaticStringsKey.GA_gameKey, StaticStringsKey.GA_secretKey);
|
||||
|
||||
Debug.Log("[ToukaAnalyticsManager] GA: init :GA_gameKey=" + StaticStringsKey.GA_gameKey + "GA_secretKey=" + StaticStringsKey.GA_secretKey + " Application.version=" + Application.version);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化Tenjin
|
||||
/// </summary>
|
||||
private void InitTenjin()
|
||||
{
|
||||
#if IOS_CN
|
||||
if (!StaticOtherConfig.InitTenjinLater_Switch) // 启动就初始化tenjin
|
||||
{
|
||||
InitTenjinInner();
|
||||
}
|
||||
else // 延时初始化tenjin
|
||||
{
|
||||
if (ToukaUtils.GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.HasInitTenjinFirst, 0) == 1)
|
||||
{
|
||||
Debug.Log("首次初始化过tenjin了,之后都可以正常初始了");
|
||||
InitTenjinInner();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("需要延迟,启动处不能初始化tenjin");
|
||||
}
|
||||
}
|
||||
#else
|
||||
InitTenjinInner();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实际调用初始化Tenjin
|
||||
/// </summary>
|
||||
public void InitTenjinInner()
|
||||
{
|
||||
//Debug.Log("[ToukaAnalyticsManager] init tenjin inner");
|
||||
//BaseTenjin instance = Tenjin.getInstance(StaticStringsKey.TENJIN_KEY);
|
||||
|
||||
//// Sends install/open event to Tenjin
|
||||
//instance.Connect();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Events
|
||||
|
||||
/// <summary>
|
||||
/// 打点事件 Tenjin / GA
|
||||
/// </summary>
|
||||
/// <param name="_logType"> Tenjin / GA </param>
|
||||
/// <param name="_eventName"> 事件名称 </param>
|
||||
/// <param name="_label"> 事件属性(可选) </param>
|
||||
public void LogEvent (ToukaLogType _logType, string _eventName, string _label = null) {
|
||||
Debug.Log ("[ToukaAnalyticsManager] LogEvent, logType : " + _logType.ToString() + " , eventName " + _eventName + " label:" + _label);
|
||||
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
if (string.IsNullOrEmpty (_eventName)) return;
|
||||
|
||||
// ga
|
||||
if ((_logType & ToukaLogType.GA) > 0)
|
||||
{
|
||||
if (string.IsNullOrEmpty(_label))
|
||||
{
|
||||
GameAnalytics.NewDesignEvent("event:" + _eventName);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameAnalytics.NewDesignEvent("event:" + _eventName + "_" + _label);
|
||||
}
|
||||
}
|
||||
|
||||
// tenjin
|
||||
if ((_logType & ToukaLogType.Tenjin) > 0)
|
||||
{
|
||||
if (string.IsNullOrEmpty(_label))
|
||||
{
|
||||
Tenjin.getInstance(StaticStringsKey.TENJIN_KEY).SendEvent(_eventName);
|
||||
}
|
||||
else
|
||||
{
|
||||
Tenjin.getInstance(StaticStringsKey.TENJIN_KEY).SendEvent(_eventName + _label);
|
||||
}
|
||||
Debug.Log("Touka LogEventWithLabel Tenjin: " + _eventName + " label:" + _label);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// umeng打点 - 事件名字
|
||||
/// </summary>
|
||||
/// <param name="_eventSort">事件名字</param>
|
||||
public void LogEventByUmeng(string _eventSort)
|
||||
{
|
||||
#if !NO_SDK
|
||||
Debug.Log("Touka LogEventByUmeng _eventSort : " + _eventSort);
|
||||
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
Umeng.Analytics.Event(_eventSort);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// umeng 打点 - 事件名字 + 一个事件属性(key:value)
|
||||
/// </summary>
|
||||
/// <param name="_eventSort">事件名字</param>
|
||||
/// <param name="_key">属性key</param>
|
||||
/// <param name="_value">属性value</param>
|
||||
public void LogEventByUmeng(string _eventSort, string _key, string _value)
|
||||
{
|
||||
if(!string.IsNullOrEmpty(_eventSort) && !string.IsNullOrEmpty(_key) && !string.IsNullOrEmpty(_value))
|
||||
{
|
||||
LogEventByUmeng(_eventSort, new Dictionary<string, string>() { { _key, _value} });
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// umeng 打点 - 事件名字 + 两个事件属性(key:value)
|
||||
/// </summary>
|
||||
/// <param name="_eventSort">事件名字</param>
|
||||
/// <param name="_key01"> 属性1-key </param>
|
||||
/// <param name="_value01"> 属性1-value </param>
|
||||
/// <param name="_key02"> 属性2-key </param>
|
||||
/// <param name="_value02"> 属性2-value </param>
|
||||
public void LogEventByUmeng(string _eventSort, string _key01, string _value01, string _key02, string _value02)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_eventSort) && !string.IsNullOrEmpty(_key01) && !string.IsNullOrEmpty(_value01) && !string.IsNullOrEmpty(_key02) && !string.IsNullOrEmpty(_value02))
|
||||
{
|
||||
LogEventByUmeng(_eventSort, new Dictionary<string, string>() { { _key01, _value01 }, {_key02, _value02 } });
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// umeng 打点 - 事件名字 + 事件属性字典
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"> 事件名字 </param>
|
||||
/// <param name="_eventDic"> 事件属性字典 </param>
|
||||
public void LogEventByUmeng(string _eventSort, Dictionary<string, string> _eventDic = null)
|
||||
{
|
||||
string eventStr = "UMENG LOG _eventSort : " + _eventSort + " -> ";
|
||||
|
||||
if(_eventDic != null)
|
||||
{
|
||||
foreach (var kvp in _eventDic)
|
||||
{
|
||||
eventStr += string.Format(" (Key = {0}, Value = {1} ) , ", kvp.Key, kvp.Value);
|
||||
}
|
||||
}
|
||||
|
||||
Debug.Log(eventStr);
|
||||
#if !NO_SDK
|
||||
#if UNITY_EDITOR
|
||||
return;
|
||||
#endif
|
||||
if (!string.IsNullOrEmpty(_eventSort))
|
||||
{
|
||||
if(_eventDic != null && _eventDic.Count == 0)
|
||||
{
|
||||
Umeng.Analytics.Event(_eventSort);
|
||||
}
|
||||
else if(_eventDic != null && _eventDic.Count > 0)
|
||||
{
|
||||
Umeng.Analytics.Event(_eventSort, _eventDic);
|
||||
}else if(_eventDic == null)
|
||||
{
|
||||
Umeng.Analytics.Event(_eventSort);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("UMENG Event Sort is Empty!");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Umeng 打点广告按钮展示
|
||||
/// </summary>
|
||||
/// <param name="_adShow"></param>
|
||||
public void LogEventByUmengAdShow(string _adShow)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_adShow))
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_TKInner_ad_button_show, new System.Collections.Generic.Dictionary<string, string>() { { StaticStringsEvent.Event_Type_TKInner_ad_position, _adShow } });
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public enum ToukaLogType {
|
||||
GA = 1,
|
||||
Tenjin = 1 << 6,
|
||||
}
|
|
@ -1,101 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using GameAnalyticsSDK;
|
||||
using Touka.GameLogic;
|
||||
|
||||
public partial class StaticOnlineParams :ToukaSingletonMonoBehaviour<StaticOnlineParams>{
|
||||
|
||||
public void Init () {
|
||||
// init all params, from local saved
|
||||
InitAllParams();
|
||||
}
|
||||
|
||||
private void InitAllParams()
|
||||
{
|
||||
InitAllGameParams();
|
||||
}
|
||||
|
||||
#region Save & Get value
|
||||
|
||||
/// <summary>
|
||||
/// save online value by string
|
||||
/// </summary>
|
||||
/// <param name="_key"></param>
|
||||
/// <param name="_value"></param>
|
||||
public void SaveOnlineValue2Local(string _key, string _value)
|
||||
{
|
||||
ToukaUtils.SavePlayerPrefsStringByKeyValue(_key, _value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get online value by string
|
||||
/// </summary>
|
||||
/// <param name="_key"></param>
|
||||
/// <param name="_defaultValue"></param>
|
||||
/// <returns></returns>
|
||||
public string GetOnlineValueFromLocal(string _key, string _defaultValue)
|
||||
{
|
||||
string tempValue = ToukaUtils.GetPlayerPrefsStringByKey(_key, _defaultValue);
|
||||
return tempValue;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
public class ToukaOnlineParam {
|
||||
public string Key; // key
|
||||
public bool needUploadDirectly = true; // 获取到在线参数后是否立刻上传,默认:是
|
||||
|
||||
private string defaultValue;
|
||||
public string DefaultValue // value
|
||||
{
|
||||
get
|
||||
{
|
||||
string tempOnlineValue = TGTools.Instance.ConfigValueForKey(Key);
|
||||
Debug.Log("value ----- tempOnlineValue : " + tempOnlineValue);
|
||||
if (!string.IsNullOrEmpty(tempOnlineValue)) // 实时取一下在线参数
|
||||
{
|
||||
UpdateValueByKey(tempOnlineValue);
|
||||
}
|
||||
|
||||
return defaultValue;
|
||||
}
|
||||
set
|
||||
{
|
||||
defaultValue = value;
|
||||
}
|
||||
}
|
||||
|
||||
public ToukaOnlineParam (string _key, string _defaultValue, bool _uploadDirectly = true) {
|
||||
Key = _key;
|
||||
DefaultValue = _defaultValue;
|
||||
needUploadDirectly = _uploadDirectly;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 拿到在线参数后,更新数据
|
||||
/// </summary>
|
||||
/// <param name="newValue"></param>
|
||||
public void UpdateValueByKey(string newValue)
|
||||
{
|
||||
DefaultValue = newValue; // 赋值
|
||||
|
||||
if (needUploadDirectly) // 若需要,则上报
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(string.Format("{0}_{1}", Key, newValue));
|
||||
}
|
||||
|
||||
StaticOnlineParams.Instance.SaveOnlineValue2Local(Key, newValue); // 本地缓存
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始化参数
|
||||
/// </summary>
|
||||
/// <param name="_newValue"></param>
|
||||
public void InitValue(string _newValue)
|
||||
{
|
||||
DefaultValue = _newValue; // 赋值
|
||||
}
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Touka.GameLogic;
|
||||
|
||||
public class ToukaStageCommonEvent : ToukaSingletonMonoBehaviour<ToukaStageCommonEvent>
|
||||
{
|
||||
#region 每局游戏时长
|
||||
|
||||
float stageStartedTime = 0;
|
||||
public void SetBeginStageTime()
|
||||
{
|
||||
stageStartedTime = Time.time;
|
||||
}
|
||||
|
||||
public int GetStageDeltaTime()
|
||||
{
|
||||
int deltaTime = (int)Mathf.Ceil(Time.time - stageStartedTime);
|
||||
Debug.Log("获取一关的时间间隔");
|
||||
return deltaTime;
|
||||
}
|
||||
|
||||
#endregion
|
||||
/// <summary>
|
||||
/// 开始本局游戏
|
||||
/// </summary>
|
||||
/// <param name="_levelId"> 关卡id </param>
|
||||
public void StageStartEvent(int _levelId)
|
||||
{
|
||||
SetBeginStageTime();
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_stage_start, StaticStringsEvent.Event_Sort_stage_level, _levelId.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当局游戏时长 (从开局到结算页弹出为止)
|
||||
/// </summary>
|
||||
/// <param name="_levelId"> 关卡id </param>
|
||||
public void StageTimeEvent(int _levelId)
|
||||
{
|
||||
int lastSeconds = GetStageDeltaTime();
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_stage_time, StaticStringsEvent.Event_Sort_stage_level, _levelId.ToString(), StaticStringsEvent.Event_Sort_time_long, lastSeconds.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 展示本局游戏失败结算页
|
||||
/// </summary>
|
||||
/// <param name="_levelId"> 关卡id </param>
|
||||
public void StageFailureEvent(int _levelId)
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_stage_failure, StaticStringsEvent.Event_Sort_stage_level, _levelId.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 展示本局游戏成功结算页
|
||||
/// </summary>
|
||||
/// <param name="_levelId"> 关卡id </param>
|
||||
public void StageSuccessEvent(int _levelId)
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Sort_stage_success, StaticStringsEvent.Event_Sort_stage_level, _levelId.ToString());
|
||||
}
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
using UnityEngine;
|
||||
using System;
|
||||
using Touka.GameLogic;
|
||||
|
||||
/// <summary>
|
||||
/// SDK内部工具类
|
||||
/// </summary>
|
||||
public class ToukaUtilsInner : ToukaSingletonMonoBehaviour<ToukaUtilsInner>
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否为首日登录 - 自然日
|
||||
/// </summary>
|
||||
public bool isFirstDayLogin = false;
|
||||
|
||||
/// <summary>
|
||||
/// 保存首次登录时间
|
||||
/// </summary>
|
||||
public void SaveFirstLoginTime()
|
||||
{
|
||||
if(ToukaUtils.IfFirstCheckPlayerPrefs(StaticStringsPlayerPrefs.FirstLoginFlag))
|
||||
{
|
||||
ToukaUtils.SaveCurrTime2PlayerPrefs(StaticStringsPlayerPrefs.FirstLoginTime);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 次日登录 - 自然日
|
||||
/// </summary>
|
||||
public void Check2DaysLogin()
|
||||
{
|
||||
var loginCountKey = StaticStringsPlayerPrefs.ToukaLoginCount;
|
||||
var loginCount = ToukaUtils.GetPlayerPrefsIntByKey(loginCountKey);
|
||||
if (loginCount == 2)
|
||||
{
|
||||
Debug.Log("已经符合条件上报过了,不进行后续判断");
|
||||
return;
|
||||
}
|
||||
|
||||
isFirstDayLogin = true;
|
||||
|
||||
var todayKey = DateTime.Today.DayOfYear.ToString();
|
||||
Debug.Log("todayKey : " + todayKey);
|
||||
if (ToukaUtils.GetPlayerPrefsIntByKey(todayKey) == 0)
|
||||
{
|
||||
Debug.Log("今天为首次登陆");
|
||||
ToukaUtils.SavePlayerPrefsIntByKeyValue(todayKey, 1);
|
||||
|
||||
var lastDay = (DateTime.Today.DayOfYear - 1).ToString();
|
||||
Debug.Log("lastDay : " + lastDay);
|
||||
if (loginCount == 1 && ToukaUtils.GetPlayerPrefsIntByKey(lastDay) == 1)
|
||||
{
|
||||
Debug.Log("次日启动:之前没有上报过,符合条件。可以上报");
|
||||
isFirstDayLogin = false;
|
||||
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_TKInner_NewUserNextDayLogin);
|
||||
}
|
||||
Debug.Log("本地保存登陆天数+1");
|
||||
ToukaUtils.SavePlayerPrefsIntByKeyValue(loginCountKey, loginCount + 1);
|
||||
}
|
||||
|
||||
if (isFirstDayLogin)
|
||||
{
|
||||
Debug.Log("是第一天登录");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("不 是第一天登录");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,105 +0,0 @@
|
|||
using Touka.GameLogic;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public partial class ToukaSDKManager : ToukaSingletonMonoBehaviour<ToukaSDKManager>
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化统计相关SDK,游戏启动调用
|
||||
/// </summary>
|
||||
public void initAnalytics()
|
||||
{
|
||||
// 最开始你想需要初始化的逻辑
|
||||
ToukaLogicManager.Instance.Init();
|
||||
|
||||
// 统计sdk初始化
|
||||
ToukaAnalyticsManager.Instance.Init();
|
||||
|
||||
// 推送初始化
|
||||
if (StaticOtherConfig.LocalNotitcifaction_Switch)
|
||||
{
|
||||
LocalNotificationManager.Instance.Init();
|
||||
}
|
||||
|
||||
// 排行榜功能
|
||||
if (StaticOtherConfig.LeaderBoard_Switch)
|
||||
{
|
||||
LeaderBoards.Instance.init();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#region LOG EVENT
|
||||
|
||||
#region Umeng event
|
||||
|
||||
/// <summary>
|
||||
/// LogEventByUmeng with event name
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
public void LogEventByUmeng(string _eventSort)
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(_eventSort);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LogEventByUmeng with one key-value
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
/// <param name="_key"></param>
|
||||
/// <param name="_value"></param>
|
||||
public void LogEventByUmeng(string _eventSort, string _key, string _value)
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(_eventSort, _key, _value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LogEventByUmeng with two key-value
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
/// <param name="_key01"></param>
|
||||
/// <param name="_value01"></param>
|
||||
/// <param name="_key02"></param>
|
||||
/// <param name="_value02"></param>
|
||||
public void LogEventByUmeng(string _eventSort, string _key01, string _value01, string _key02, string _value02)
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(_eventSort, _key01, _value01, _key02, _value02);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LogEventByUmeng with key-value dic
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
/// <param name="_eventDic"></param>
|
||||
public void LogEventByUmeng(string _eventSort, Dictionary<string, string> _eventDic = null)
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(_eventSort, _eventDic);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// LogEventByUmengAdShow
|
||||
/// </summary>
|
||||
/// <param name="_adShow">event name</param>
|
||||
public void LogEventByUmengAdShow(string _adShow)
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmengAdShow(_adShow);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Tenjin
|
||||
|
||||
/// <summary>
|
||||
/// LogEventByTenjin
|
||||
/// </summary>
|
||||
/// <param name="_eventName"></param>
|
||||
public void LogEventByTenjin(string _eventName)
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, _eventName);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
|
@ -1,93 +0,0 @@
|
|||
using GameAnalyticsSDK;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
|
||||
/*
|
||||
在线参数类
|
||||
|
||||
若需新增一个在线参数:
|
||||
1. 可新添加一行 ToukaOnlineParam 定义,参数为 umeng后台配的key 和 其本地默认值。
|
||||
2. 把新定义的参数 加到 onlineParamsList 中
|
||||
3. 使用在线参数:int.Parse(StaticOnlineParams.IV1_PerM_OnlineParam.DefaultValue);/ string.Parse(xxx.DefaultValue);
|
||||
|
||||
内部会处理,拿到一次在线参数后,缓存在本地,下次启动若没拿到在线参数,会用上次缓存的。以保证参数变量不会跳来跳去。在线参数缓存后,会更新为新的在线参数值。
|
||||
在线参数没配的,直接走本地默认值。
|
||||
|
||||
*/
|
||||
public partial class StaticOnlineParams {
|
||||
|
||||
// --------------------- SDK 内部封装到的 在线参数,默认值需根据需求修改 -----------------------
|
||||
|
||||
// 新用户看N次广告上报
|
||||
public static ToukaOnlineParam NewUserAdsCountOnlineParams = new ToukaOnlineParam("NewUserAdsCount", 10.ToString()); // 新用户看N次广告上报
|
||||
|
||||
// 插屏相关在线参数 IV1
|
||||
public static ToukaOnlineParam IV1_PreTimesN_OnlineParam = new ToukaOnlineParam("IV1_PreTimesN", 1.ToString()); // 前N次触发不弹插屏
|
||||
public static ToukaOnlineParam IV1_PerM_OnlineParam = new ToukaOnlineParam("IV1_PerM", 1.ToString()); // 每M次触发一次
|
||||
public static ToukaOnlineParam IV1_MinTimeL_OnlineParam = new ToukaOnlineParam("IV1_MinTimeL", 15.ToString()); // 和上次广告间隔15s
|
||||
|
||||
// 插屏相关在线参数 IV2
|
||||
public static ToukaOnlineParam IV2_PreTimesN_OnlineParam = new ToukaOnlineParam("IV2_PreTimesN", 1.ToString()); // 前N次触发不弹插屏
|
||||
public static ToukaOnlineParam IV2_PerM_OnlineParam = new ToukaOnlineParam("IV2_PerM", 1.ToString()); // 每M次触发一次
|
||||
public static ToukaOnlineParam IV2_MinTimeL_OnlineParam = new ToukaOnlineParam("IV2_MinTimeL", 15.ToString()); // 和上次广告间隔15s
|
||||
|
||||
// --------------------- 游戏新增 在线参数 (key, 默认值) -----------------------
|
||||
|
||||
// ** 第一步:新增一行在线参数定义
|
||||
public static ToukaOnlineParam NewUserRVCountOnlineParams = new ToukaOnlineParam("NewUserRVCount", 6.ToString()); // 新用户看N次激励视频广告上报
|
||||
public static ToukaOnlineParam NewUserPassXLevelOnlineParams = new ToukaOnlineParam("NewUserPassXLevel", 15.ToString()); // 新用户通关第N关上报
|
||||
|
||||
public static ToukaOnlineParam IsShowAuthViewOnlineParams = new ToukaOnlineParam("isShowAuthView", 0.ToString()); // 实名认证开关,默认关闭
|
||||
|
||||
private List<ToukaOnlineParam> onlineParamsList = new List<ToukaOnlineParam>() {
|
||||
NewUserAdsCountOnlineParams,IV1_PerM_OnlineParam, IV1_MinTimeL_OnlineParam, IV1_PreTimesN_OnlineParam,
|
||||
IV2_PerM_OnlineParam, IV2_MinTimeL_OnlineParam, IV2_PreTimesN_OnlineParam
|
||||
};
|
||||
|
||||
public void InitData()
|
||||
{
|
||||
// ** 第二步:添加到 在线参数列表里
|
||||
onlineParamsList.Add(NewUserRVCountOnlineParams);
|
||||
onlineParamsList.Add(NewUserPassXLevelOnlineParams);
|
||||
|
||||
onlineParamsList.Add(IsShowAuthViewOnlineParams);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化
|
||||
/// </summary>
|
||||
private void InitAllGameParams()
|
||||
{
|
||||
// init values
|
||||
foreach(ToukaOnlineParam tempParam in onlineParamsList)
|
||||
{
|
||||
tempParam.InitValue(GetOnlineValueFromLocal(tempParam.Key, tempParam.DefaultValue)); // 初始化,取本地缓存的值
|
||||
|
||||
Debug.Log("[StaticOnlineParams] 初始化Umeng在线参数,本地缓存值key :" + tempParam.Key + " , value : " + tempParam.DefaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解析在线参数
|
||||
/// </summary>
|
||||
public void parseGameOnlineConfig()
|
||||
{
|
||||
Debug.Log("[StaticOnlineParams] 开始解析Umeng回来的在线参数 ----------");
|
||||
|
||||
// update values
|
||||
foreach (ToukaOnlineParam tempParam in onlineParamsList)
|
||||
{
|
||||
string tempValue = "";
|
||||
|
||||
tempValue = TGTools.Instance.ConfigValueForKey(tempParam.Key);
|
||||
|
||||
if (!string.IsNullOrEmpty(tempValue))
|
||||
{
|
||||
Debug.Log("[StaticOnlineParams] 拿到的Umeng在线参数, key :" + tempParam.Key + " , value : " + tempValue);
|
||||
tempParam.UpdateValueByKey(tempValue);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
/// <summary>
|
||||
/// 统一定义游戏内打点事件名称
|
||||
/// </summary>
|
||||
public static partial class StaticStringsEvent
|
||||
{
|
||||
// stage
|
||||
public const string Event_Sort_stage_start = "stage_start";
|
||||
public const string Event_Sort_stage_time = "stage_time";
|
||||
public const string Event_Sort_stage_failure = "stage_failure";
|
||||
public const string Event_Sort_stage_success = "stage_success";
|
||||
|
||||
public const string Event_Sort_stage_level = "stage_level";
|
||||
public const string Event_Sort_time_long = "time_long";
|
||||
|
||||
|
||||
}
|
|
@ -89,7 +89,7 @@ public class ButtonEndings : MonoBehaviour
|
|||
|
||||
private void OnClick()
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.ClickTip, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.ClickTip, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
|
||||
ShowTip(false);
|
||||
DelClick?.Invoke();
|
||||
|
|
|
@ -93,19 +93,22 @@ public class EndingCell : MonoBehaviour
|
|||
|
||||
private void OnClickAdTip()
|
||||
{
|
||||
ToukaSDKManager.Instance.PlayRewardAd(Const.AdsEvtValue.UnlockSound, WatchAdSucceed, () =>
|
||||
TKGSDKManager.Instance.PlayRewardAd(Const.AdsEvtValue.UnlockSound, WatchAdSucceed, () =>
|
||||
{
|
||||
UIManager.Instance.OpenUI<PanelNoAdsTip>();
|
||||
});
|
||||
}
|
||||
|
||||
private void WatchAdSucceed()
|
||||
private void WatchAdSucceed(bool pResult)
|
||||
{
|
||||
if (!pResult)
|
||||
return;
|
||||
|
||||
PlayerData.Instance.AddEndingAdTip(mLevelID, mEndingID);
|
||||
mBtnTip.gameObject.SetActive(true);
|
||||
mBtnAdTip.gameObject.SetActive(false);
|
||||
OnClickTip();
|
||||
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.UnlockTip, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.UnlockTip, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
}
|
||||
}
|
|
@ -60,6 +60,8 @@ public class LevelPage : PageView
|
|||
{
|
||||
tCell.SetUnlock();
|
||||
tCell.DelClick = OnClickUnlockLevel;
|
||||
|
||||
TKGSDKManager.Instance.LogRewardAdBtnShow(Const.AdsEvtValue.UnlockLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -88,10 +90,13 @@ public class LevelPage : PageView
|
|||
|
||||
private void OnClickUnlockLevel(int pLevelIndex)
|
||||
{
|
||||
ToukaSDKManager.Instance.PlayRewardAd(Const.AdsEvtValue.UnlockLevel, () =>
|
||||
TKGSDKManager.Instance.PlayRewardAd(Const.AdsEvtValue.UnlockLevel, (pResult) =>
|
||||
{
|
||||
if (pResult)
|
||||
{
|
||||
PlayerData.Instance.UnlockNewLevel(false);
|
||||
LoadData(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ public class PanelEndings : BasePanel
|
|||
|
||||
if (PlayerData.Instance.EndingAdTipCountOfLevel(mLevelID) < mLvData.Endings.Count)
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmengAdShow(Const.AdsEvtValue.UnlockSound);
|
||||
TKGSDKManager.Instance.LogRewardAdBtnShow(Const.AdsEvtValue.UnlockSound);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -144,19 +144,19 @@ public class PanelGame : BasePanel
|
|||
|
||||
private void OnClickMoreGame()
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.ClickMoreGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.ClickMoreGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
|
||||
ToukaUtils.OpenMoreGames();
|
||||
TKGSDKManager.Instance.OpenMoreGame();
|
||||
}
|
||||
|
||||
private void OnClickLevel()
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.ClickLevel, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.ClickLevel, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
|
||||
PanelLevel tUILevel = UIManager.Instance.OpenUI<PanelLevel>();
|
||||
tUILevel.Init(true);
|
||||
|
||||
ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.GamingSelect);
|
||||
TKGSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.GamingSelect);
|
||||
}
|
||||
|
||||
private void OnClickMenu()
|
||||
|
|
|
@ -37,7 +37,7 @@ public class PanelLevel : BasePanel
|
|||
mRctScream.gameObject.SetActive(false);
|
||||
mGobOpMask.SetActive(false);
|
||||
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelLevelShowed);
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.PanelLevelShowed);
|
||||
}
|
||||
|
||||
public override void OnClose()
|
||||
|
@ -45,7 +45,7 @@ public class PanelLevel : BasePanel
|
|||
base.OnClose();
|
||||
|
||||
AudioManager.Instance.PlaySound(AudioClipType.UIClose);
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelLevelBack);
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.PanelLevelBack);
|
||||
}
|
||||
|
||||
public void Init(bool pOpenInLevel)
|
||||
|
@ -80,7 +80,7 @@ public class PanelLevel : BasePanel
|
|||
|
||||
private void OnClickBackToMain()
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelLevelHome);
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.PanelLevelHome);
|
||||
|
||||
GameManager.Instance.LoadMain();
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ public class PanelMain : BasePanel
|
|||
ShowMainPart();
|
||||
}
|
||||
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelMainShowed);
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.PanelMainShowed);
|
||||
}
|
||||
|
||||
public override void OnClose()
|
||||
|
@ -434,11 +434,11 @@ public class PanelMain : BasePanel
|
|||
|
||||
private void OnClickPrivacy()
|
||||
{
|
||||
ToukaUtils.OpenPrivacyURL();
|
||||
TKGSDKManager.Instance.OpenPrivacyURL();
|
||||
}
|
||||
|
||||
private void OnClickUserPolicy()
|
||||
{
|
||||
ToukaUtils.OpenUserPolicy();
|
||||
TKGSDKManager.Instance.OpenUserTermURL();
|
||||
}
|
||||
}
|
|
@ -33,8 +33,7 @@ public class PanelResult : BasePanel
|
|||
|
||||
[SerializeField] ButtonEndings mBtnEndings;
|
||||
|
||||
private bool mReviewShowed = false;
|
||||
private const int REVIEW_LEVEL = 1;
|
||||
public bool ReviewShowed = false;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
|
@ -75,6 +74,10 @@ public class PanelResult : BasePanel
|
|||
mBtnChoose.gameObject.SetActive(pNextLevelClear);
|
||||
|
||||
mBtnSkip.gameObject.SetActive(PlayerData.Instance.CurrentLevel >= PlayerData.Instance.UnlockedLevel);
|
||||
if (mBtnSkip.gameObject.activeSelf)
|
||||
{
|
||||
TKGSDKManager.Instance.LogRewardAdBtnShow(Const.AdsEvtValue.EndSkip);
|
||||
}
|
||||
|
||||
LevelData tLvData = GameConfig.Instance.GetLevelData(pLevelID);
|
||||
mBtnEndings.Init(pLevelID, PlayerData.Instance.EndingCountOfLevel(pLevelID), tLvData.Endings.Count);
|
||||
|
@ -94,53 +97,42 @@ public class PanelResult : BasePanel
|
|||
{
|
||||
mBtnEndings.ShowTip(!pIsWin && !pHasComplete);
|
||||
}
|
||||
|
||||
if (!PlayerData.Instance.HasShowedReview && PlayerData.Instance.CurrentLevel == REVIEW_LEVEL)
|
||||
{
|
||||
PlayerData.Instance.MarkReviewShowed();
|
||||
ToukaUtils.OpenSystemReviewPop();
|
||||
mReviewShowed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
mReviewShowed = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnClickAgain()
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.EndRetry, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.EndRetry, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
|
||||
DelAgain?.Invoke();
|
||||
|
||||
if (!mReviewShowed)
|
||||
if (!ReviewShowed)
|
||||
{
|
||||
ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndRetry);
|
||||
TKGSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndRetry);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnClickNext()
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.EndNext, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.EndNext, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
|
||||
GameManager.Instance.NextLevel();
|
||||
|
||||
if (!mReviewShowed)
|
||||
if (!ReviewShowed)
|
||||
{
|
||||
ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndNext);
|
||||
TKGSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndNext);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnClickChoose()
|
||||
{
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.EndSelect, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
TKGSDKManager.Instance.LogEvent(Const.AdsEvent.EndSelect, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString());
|
||||
|
||||
PanelLevel tUILevel = UIManager.Instance.OpenUI<PanelLevel>();
|
||||
tUILevel.Init(true);
|
||||
|
||||
if (!mReviewShowed)
|
||||
if (!ReviewShowed)
|
||||
{
|
||||
ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndSelect);
|
||||
TKGSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndSelect);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,10 +144,13 @@ public class PanelResult : BasePanel
|
|||
|
||||
private void OnClickSkip()
|
||||
{
|
||||
ToukaSDKManager.Instance.PlayRewardAd(Const.AdsEvtValue.EndSkip, () =>
|
||||
TKGSDKManager.Instance.PlayRewardAd(Const.AdsEvtValue.EndSkip, (pResult) =>
|
||||
{
|
||||
if (pResult)
|
||||
{
|
||||
PlayerData.Instance.UnlockNewLevel();
|
||||
GameManager.Instance.NextLevel();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 14356dc9a8552487883cb10556daf5b7
|
||||
guid: 280bc1f07de0b47dca18f2c1ae47b020
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b352bcee83fc04a0c84e8d56fbbf1ea2
|
||||
guid: d593d4318dbe74bc596a591549ee75d5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d9a045a313aa35b47944161eb69ce054
|
||||
guid: 0382ea99170c4407c9567e7943eeb050
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
|
@ -0,0 +1,372 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Touka;
|
||||
|
||||
public class TKGSDKManager : TKGSingleton<TKGSDKManager>, ITKGSDK
|
||||
{
|
||||
public bool IsNoAllAD = false;
|
||||
public bool IsNoInterstitialAD = false;
|
||||
|
||||
private ITKGSDK m_sdkInterface;
|
||||
|
||||
protected override void OnInstanceCreate()
|
||||
{
|
||||
base.OnInstanceCreate();
|
||||
#if UNITY_EDITOR
|
||||
m_sdkInterface = new TKGSDKUnity();
|
||||
#elif UNITY_IOS
|
||||
m_sdkInterface = new TKGSDKUnity();
|
||||
#elif UNITY_ANDROID
|
||||
m_sdkInterface = new TKGSDKNative();
|
||||
#else
|
||||
m_sdkInterface = new TKGSDKUnity();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// init sdk
|
||||
/// </summary>
|
||||
/// <param name="_initCallback"></param>
|
||||
public void InitSDK(Action _initCallback = null)
|
||||
{
|
||||
m_sdkInterface.InitSDK(_initCallback);
|
||||
|
||||
#if USE_IAP
|
||||
IAPTool.Instance.Initialize();
|
||||
#endif
|
||||
|
||||
#if USE_FIREBASE
|
||||
FirebaseTool.Instance.Initialize();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set game focus
|
||||
/// </summary>
|
||||
/// <param name="_gameFocusAction"></param>
|
||||
public void SetGameFocusListener(Action<bool> _gameFocusAction)
|
||||
{
|
||||
m_sdkInterface.SetGameFocusListener(_gameFocusAction);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get channel
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public AppChannel GetChannel()
|
||||
{
|
||||
return m_sdkInterface.GetChannel();
|
||||
}
|
||||
|
||||
#region Ads
|
||||
/// <summary>
|
||||
/// Show banner
|
||||
/// </summary>
|
||||
/// <param name="_pos">1:top,2:bottom</param>
|
||||
public void ShowBanner(int _pos)
|
||||
{
|
||||
m_sdkInterface.ShowBanner(_pos);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hide banner
|
||||
/// </summary>
|
||||
public void HideBanner()
|
||||
{
|
||||
m_sdkInterface.HideBanner();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Play Interstitial Ad
|
||||
/// </summary>
|
||||
/// <param name="_adPos"></param>
|
||||
/// <param name="_callback"></param>
|
||||
/// <param name="_IvType"></param>
|
||||
public void PlayInterstitialAd(string _adPos, Action _callback = null, IVADType _IvType = IVADType.IV1)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
if (null != _callback)
|
||||
{
|
||||
_callback.Invoke();
|
||||
}
|
||||
#endif
|
||||
if (IsNoAllAD || IsNoInterstitialAD)
|
||||
{
|
||||
_callback?.Invoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sdkInterface.PlayInterstitialAd(_adPos, _callback, _IvType);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Play Reward Ad
|
||||
/// </summary>
|
||||
/// <param name="_adPos"></param>
|
||||
/// <param name="_rewardCallback"></param>
|
||||
/// <param name="_playFailedCallback"></param>
|
||||
public void PlayRewardAd(string _adPos, Action<bool> _rewardCallback = null, Action _playFailedCallback = null)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
if(null != _rewardCallback)
|
||||
{
|
||||
_rewardCallback.Invoke(true);
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
|
||||
if (IsNoAllAD)
|
||||
{
|
||||
_rewardCallback?.Invoke(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sdkInterface.PlayRewardAd(_adPos, _rewardCallback, _playFailedCallback);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is Ready Interstitial
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsReadyInterstitialAd()
|
||||
{
|
||||
return m_sdkInterface.IsReadyInterstitialAd();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is Ready Reward
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool IsReadyRewardAd()
|
||||
{
|
||||
return m_sdkInterface.IsReadyRewardAd();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Log Event
|
||||
|
||||
#region Normal
|
||||
|
||||
/// <summary>
|
||||
/// Log Event
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
public void LogEvent(string _eventSort)
|
||||
{
|
||||
m_sdkInterface.LogEvent(_eventSort);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Log Event
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
/// <param name="_key"></param>
|
||||
/// <param name="_value"></param>
|
||||
public void LogEvent(string _eventSort, string _key, string _value)
|
||||
{
|
||||
m_sdkInterface.LogEvent(_eventSort, _key, _value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Log Event
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
/// <param name="_key01"></param>
|
||||
/// <param name="_value01"></param>
|
||||
/// <param name="_key02"></param>
|
||||
/// <param name="_value02"></param>
|
||||
public void LogEvent(string _eventSort, string _key01, string _value01, string _key02, string _value02)
|
||||
{
|
||||
m_sdkInterface.LogEvent(_eventSort, _key01, _value01, _key02, _value02);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Log Event
|
||||
/// </summary>
|
||||
/// <param name="_eventSort"></param>
|
||||
/// <param name="_eventDic"></param>
|
||||
public void LogEvent(string _eventSort, Dictionary<string, string> _eventDic = null)
|
||||
{
|
||||
m_sdkInterface.LogEvent(_eventSort, _eventDic);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Level Event
|
||||
|
||||
/// <summary>
|
||||
/// Notify game start
|
||||
/// </summary>
|
||||
/// <param name="_level"></param>
|
||||
public void NotifyGameStart(int _level)
|
||||
{
|
||||
m_sdkInterface.NotifyGameStart(_level);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Notify game start
|
||||
/// </summary>
|
||||
/// <param name="_level"></param>
|
||||
public void NotifyGameStart(string _level)
|
||||
{
|
||||
m_sdkInterface.NotifyGameStart(_level);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Notify game end
|
||||
/// </summary>
|
||||
/// <param name="_level"></param>
|
||||
/// <param name="_win"></param>
|
||||
public bool NotifyGameEnd(int _level, bool _win)
|
||||
{
|
||||
return m_sdkInterface.NotifyGameEnd(_level, _win);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Notify game end
|
||||
/// </summary>
|
||||
/// <param name="_level"></param>
|
||||
/// <param name="_win"></param>
|
||||
public bool NotifyGameEnd(string _level, bool _win)
|
||||
{
|
||||
return m_sdkInterface.NotifyGameEnd(_level, _win);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Reward Ad Button Show
|
||||
|
||||
/// <summary>
|
||||
/// Log Reward ad button show
|
||||
/// </summary>
|
||||
/// <param name="_pos"></param>
|
||||
public void LogRewardAdBtnShow(string _pos)
|
||||
{
|
||||
m_sdkInterface.LogRewardAdBtnShow(_pos);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Tracking Event
|
||||
|
||||
/// <summary>
|
||||
/// Log Tracking Event
|
||||
/// </summary>
|
||||
/// <param name="_eventType"></param>
|
||||
public void LogTrackingEvent(TrackingEventType _eventType)
|
||||
{
|
||||
m_sdkInterface.LogTrackingEvent(_eventType);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region Online Config
|
||||
|
||||
/// <summary>
|
||||
/// get config - string
|
||||
/// </summary>
|
||||
/// <param name="_key"></param>
|
||||
/// <param name="_default"></param>
|
||||
/// <returns></returns>
|
||||
public string GetConfigStr(string _key, string _default = "")
|
||||
{
|
||||
#if USE_FIREBASE
|
||||
return FirebaseTool.Instance.GetString(_key, _default);
|
||||
#endif
|
||||
|
||||
return m_sdkInterface.GetConfigStr(_key, _default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get config - int
|
||||
/// </summary>
|
||||
/// <param name="_key"></param>
|
||||
/// <param name="_default"></param>
|
||||
/// <returns></returns>
|
||||
public int GetConfigInt(string _key, int _default = 0)
|
||||
{
|
||||
#if USE_FIREBASE
|
||||
return FirebaseTool.Instance.GetInt(_key, _default);
|
||||
#endif
|
||||
|
||||
return m_sdkInterface.GetConfigInt(_key, _default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get config - bool
|
||||
/// </summary>
|
||||
/// <param name="_key"></param>
|
||||
/// <param name="_default"></param>
|
||||
/// <returns></returns>
|
||||
public bool GetConfigBool(string _key, bool _default = false)
|
||||
{
|
||||
#if USE_FIREBASE
|
||||
return FirebaseTool.Instance.GetInt(_key, _default ? 1 : 0) == 1;
|
||||
#endif
|
||||
|
||||
return m_sdkInterface.GetConfigBool(_key, _default);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Others (common)
|
||||
|
||||
/// <summary>
|
||||
/// review
|
||||
/// </summary>
|
||||
public void Review()
|
||||
{
|
||||
m_sdkInterface.Review();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// open privacy url
|
||||
/// </summary>
|
||||
public void OpenPrivacyURL()
|
||||
{
|
||||
m_sdkInterface.OpenPrivacyURL();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// open user agreement url
|
||||
/// </summary>
|
||||
public void OpenUserTermURL()
|
||||
{
|
||||
m_sdkInterface.OpenUserTermURL();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// open more game
|
||||
/// </summary>
|
||||
public void OpenMoreGame()
|
||||
{
|
||||
m_sdkInterface.OpenMoreGame();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// open url by browser
|
||||
/// </summary>
|
||||
/// <param name="_url"></param>
|
||||
public void OpenUrlByBrowser(string _url)
|
||||
{
|
||||
m_sdkInterface.OpenUrlByBrowser(_url);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// shake
|
||||
/// </summary>
|
||||
/// <param name="_shakeType">0 light,1 medium,2 heavy</param>
|
||||
/// <param name="_intensity">ios 0~1, android any num</param>
|
||||
public void Shake(int _shakeType, float _intensity = 1)
|
||||
{
|
||||
m_sdkInterface.Shake(_shakeType, _intensity);
|
||||
}
|
||||
#endregion
|
||||
}
|
|
@ -1,7 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9c904e974bef943bca64c6dfa3a37356
|
||||
timeCreated: 1554811793
|
||||
licenseType: Pro
|
||||
guid: 76c8624dacb844b03bb8a32a7305348b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
|
@ -1,131 +1,24 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Touka;
|
||||
|
||||
/// <summary>
|
||||
/// SDK 可供外部调用的一些工具方法
|
||||
/// </summary>
|
||||
public static class ToukaUtils
|
||||
public class TKGUtils
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 跳转隐私链接
|
||||
/// </summary>
|
||||
public static void OpenPrivacyURL()
|
||||
{
|
||||
Application.OpenURL("http://www.toukagame.com/PrivacyPolicy.html");
|
||||
}
|
||||
|
||||
public static void OpenUserPolicy()
|
||||
{
|
||||
Application.OpenURL("https://www.toukagame.com/agreement.html");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开更多游戏 - 跳转appstore公司账号页面
|
||||
/// </summary>
|
||||
/// <param name="_withRedPotActive"></param>
|
||||
public static void OpenMoreGames()
|
||||
{
|
||||
#if UNITY_IOS
|
||||
Application.OpenURL("https://apps.apple.com/cn/developer/toukagames/id1544391713");
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开URL
|
||||
/// </summary>
|
||||
/// <param name="_url"></param>
|
||||
public static void OpenUrl(string _url)
|
||||
{
|
||||
Application.OpenURL(_url);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 一键加入QQ群
|
||||
/// </summary>
|
||||
public static void JoinQQGroup()
|
||||
{
|
||||
string qqUrl = "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=916827975&key=ed38055c01233796a17ff0a800c9967cdf1c2b82dfc98d287130dfe1324b411d&card_type=group&source=external&jump_from=webapi";
|
||||
Application.OpenURL(qqUrl);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开评价链接 - 跳转游戏商店页
|
||||
/// </summary>
|
||||
public static void OpenReviewURL()
|
||||
{
|
||||
#if UNITY_ANDROID
|
||||
Debug.Log("Review url = " + StaticStringsKey.REVIEW_URL + Application.identifier);
|
||||
Application.OpenURL(StaticStringsKey.REVIEW_URL+Application.identifier);
|
||||
return;
|
||||
#endif
|
||||
Application.OpenURL(StaticStringsKey.REVIEW_URL);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// iOS游戏内弹出系统评价窗口
|
||||
/// </summary>
|
||||
public static void OpenSystemReviewPop()
|
||||
{
|
||||
Debug.Log("游戏内跳出评价");
|
||||
#if UNITY_IOS
|
||||
TGTools.Instance.ShowReview();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 需要延迟初始化tenjin时调用
|
||||
/// </summary>
|
||||
public static void InitTenjinFirst()
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.InitTenjinInner();
|
||||
SavePlayerPrefsIntByKeyValue(StaticStringsPlayerPrefs.HasInitTenjinFirst, 1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否首次触达某个事件
|
||||
/// </summary>
|
||||
/// <param name="_key"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IfFirstCheckPlayerPrefs (string _key) {
|
||||
public static bool IfFirstCheckPlayerPrefs(string _key)
|
||||
{
|
||||
var isFirstClick = GetPlayerPrefsIntByKey(_key) == 0;
|
||||
SavePlayerPrefsIntByKeyValue(_key, 1);
|
||||
|
||||
return isFirstClick;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 只首次触发某个事件进行打点
|
||||
/// </summary>
|
||||
/// <param name="_logType"></param>
|
||||
/// <param name="_eventKey"></param>
|
||||
/// <param name="_eventLabel"></param>
|
||||
public static void LogFirstEvent (ToukaLogType _logType, string _eventKey) {
|
||||
var isFirstClick = IfFirstCheckPlayerPrefs (_eventKey);
|
||||
if (isFirstClick) {
|
||||
ToukaAnalyticsManager.Instance.LogEvent(_logType, _eventKey);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否是中文
|
||||
/// </summary>
|
||||
public static bool IsCN {
|
||||
get
|
||||
{
|
||||
var language = Application.systemLanguage.ToString().ToLower();
|
||||
if (language.Contains("chinese"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 本地存int
|
||||
///
|
||||
|
@ -180,7 +73,6 @@ public static class ToukaUtils
|
|||
PlayerPrefs.Save();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 缓存当前时间
|
||||
/// </summary>
|
||||
|
@ -286,41 +178,25 @@ public static class ToukaUtils
|
|||
return timeStr;
|
||||
}
|
||||
|
||||
public static void CheckPassLvAndAdEvent(int pLvNum, bool pWithAdCheck = false)
|
||||
public static void OpenBrowserUrl(string _url)
|
||||
{
|
||||
//Debug.Log("is first day ==: " + ToukaUtilsInner.Instance.isFirstDayLogin);
|
||||
//Debug.Log("pass lv count ==: " + pLvNum);
|
||||
if (ToukaUtilsInner.Instance.isFirstDayLogin && pLvNum >= int.Parse(StaticOnlineParams.NewUserPassXLevelOnlineParams.DefaultValue))
|
||||
{
|
||||
string tPassLvKey = "PassLv_Log";
|
||||
if (IfFirstCheckPlayerPrefs(tPassLvKey))
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, StaticStringsEvent.Event_Tenjin_TKInner_NewUserPassLevelX);
|
||||
ToukaAnalyticsManager.Instance.LogEventByUmeng(StaticStringsEvent.Event_Tenjin_TKInner_NewUserPassLevelX);
|
||||
Application.OpenURL(_url);
|
||||
}
|
||||
|
||||
if (pWithAdCheck)
|
||||
#region unity sdk only
|
||||
public static void InitTenjinFirst()
|
||||
{
|
||||
CheckAdCount();
|
||||
}
|
||||
}
|
||||
ToukaUtils.InitTenjinFirst();
|
||||
}
|
||||
|
||||
private static void CheckAdCount()
|
||||
public static void ActiveAutoIV(bool pActive)
|
||||
{
|
||||
var videoCount = GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.VideoShowCount);
|
||||
var intersitialCount = GetPlayerPrefsIntByKey(StaticStringsPlayerPrefs.IntersitialShowCount);
|
||||
string tLvAndAdKey = "PassLv&AdCount_Log";
|
||||
string tEvtPassLvAndAdCount = "Passlevel&Count_Video";
|
||||
AutoIntersititialManager.Instance.ActiveLogic(pActive);
|
||||
}
|
||||
|
||||
//Debug.Log("watch ad count ==: " + (videoCount + intersitialCount));
|
||||
if ((videoCount + intersitialCount) >= int.Parse(StaticOnlineParams.NewUserAdsCountOnlineParams.DefaultValue))
|
||||
public static bool WillPlayInterstitial()
|
||||
{
|
||||
if (IfFirstCheckPlayerPrefs(tLvAndAdKey))
|
||||
{
|
||||
ToukaAnalyticsManager.Instance.LogEvent(ToukaLogType.Tenjin, tEvtPassLvAndAdCount);
|
||||
ToukaSDKManager.Instance.LogEventByUmeng(tEvtPassLvAndAdCount);
|
||||
}
|
||||
}
|
||||
return ToukaInterstitialTimer.Instance.CanShow(ToukaSDKManager.IVType.IV1, true) && ToukaAdManager.Instance.IsReadyIntersitial();
|
||||
}
|
||||
#endregion
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0c6bb316782354791a6df23332a4ee5e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6b84514263d4b4a8497e36e44442b7f5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue