升级新版SDK

This commit is contained in:
yangjing 2022-05-31 23:14:44 +08:00
parent 61e9b81f8a
commit c686cc7891
690 changed files with 5561 additions and 3576 deletions

View File

@ -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>

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: e0192aaba931b459d80bca85678f958f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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>

View File

@ -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:

View File

@ -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>

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: cf61ddd9f6ac647d4accf8a1a1d2a690
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,2 +0,0 @@
target=android-28
android.library=true

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: ccb8f1abd84ed4fa497d596a0e65ca25
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 4957a197659864483a9839b8f5a93a32
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 76fa4c95ef4fb4653aaadcdefce414f3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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**

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: fd262932e6bc541748016095db13f618
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 37bfd92a04d0a48ceaf2e9e784a6d59a
guid: f4f6a35ea14114d3fa7f90d36822d9c0
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 37976cfe0530549b39d0f7e0271a4255
folderAsset: yes
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +0,0 @@
fileFormatVersion: 2
guid: 407ffca6c655a443ba2a0b82d2a43bdc
DefaultImporter:
userData:

View File

@ -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:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7c2be9a7dcf6d40f5af25d632d403f47
guid: 967b873622a954dc7afad1978782fc2d
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 48ba631656f684da8a08821a47c72d49
guid: eca69e0c5e72e436cb319d67d66e889e
folderAsset: yes
PluginImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7e4ad530b71b04e9badfe094662be466
guid: b9d295f1d6b40474b832740c53dc0162
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 79a6505a2ad55417598ed33ded0ee42c
guid: b1e0c8870faab4b1e81eb56a2625ca49
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9be3256ce7a394ef3bb7f2b152623c9b
guid: 9e12daaa70a7c4135a17c39fd22fada3
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 0b5ad6ea0b8224b33a9c57794cfcce22
guid: 5da1691e284094478a2e118f3b0a75f3
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f2bca2410fbd24ebfb259861cbcb618d
guid: cf3e87ee224034a7ca32d0029936d6c9
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d77b338aeff804c38a0c3a55134a24c0
guid: ad451212a49674981ba4f6b25add243e
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 60dfc12b4555d491baefbeb12eb6a5cc
guid: aa1bc22b5c00243859a237218c12aca1
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6f3b3743de60f43f8853b84fcf591233
guid: 666f447dd2b6443b39554966728d7c78
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fcd63e4b35cbe4f60827f97ec3f7aa3a
guid: 936e305fe37c541929e42bb5327a2b21
folderAsset: yes
PluginImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6c5ea9f5d57b1467786d11920a447376
guid: 31d9a89eba025469c9b0a36f7e21ed95
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b6b6ea391ba81486898e570cdecd8e67
guid: 9840d4c4318154ad0aedd3db85a160c5
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ea4f8b916800a4266947cff5c6361d76
guid: 782c7de76a22d40dfb37a8437a2ea3a3
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a32a9ea8d5f3d4507be277781aa64996
guid: 1294a7658c772475faf0ec2c9f3e0c75
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3cb01ba1d3232413184a3e1d2ddae469
guid: a61e112658de04b20b31be593643b5c9
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a6c6fa2cc336c4116a070432df19557e
guid: 0541d7fc6a97d43ca9b8c671a08a21b5
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1cf163327b00b47c89402217c4af48fd
guid: 029e23b4cda80416d9ed94ad22322a25
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4c164d21c3ce246e2b269411a2146e30
guid: 028f9d614ff9645049c5442f49e415a0
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 03be8413670c34ab8b1761dca9be5350
guid: 2ba6796a5cd03490aad8467505ab075e
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e2485029af36d4506847c006be7b75ec
guid: f331eb275e4a044118d322d3a084c5dc
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 531c4d98e2c0440e68752582b1ee80cd
guid: dcad451e8aec74340b22c7a5ad1ccbd1
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6d17da4f27dbb4d4ba721624025cad78
guid: 9029b80a1d92f4b059f54c3a82301106
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 0eb5186dcc8134d2bae939800247ae41
guid: b29d5e4271ebd461ebf3bca61b62460a
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ab5515f5167f64ad7bf3f45d7ae74068
guid: 2284204ea11fb4b92bce0a0b687322c5
DefaultImporter:
externalObjects: {}
userData:

View File

@ -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:

View File

@ -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:

View File

@ -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";

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 997ec64d5467ae6419c1148feb55192e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: d9f20bf5b1c4b413a8199157c232e402
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,13 +0,0 @@
/* Localized versions of Info.plist keys */
"CFBundleDisplayName" = "尖叫吧!小鸡仔!";
"CFBundleName" = "尖叫吧!小鸡仔!";
"NSBluetoothPeripheralUsageDescription" = "尖叫吧!小鸡仔! 将会使用蓝牙设备";
"NSCalendarsUsageDescription" = "尖叫吧!小鸡仔! 将会使用日历";
"NSCameraUsageDescription" = "尖叫吧!小鸡仔! 将会使用相机";
"NSPhotoLibraryUsageDescription" = "尖叫吧!小鸡仔! 将会使用相册";
"NSPhotoLibraryAddUsageDescription" = "尖叫吧!小鸡仔! 将会添加照片到您的相册";
"NSLocationAlwaysAndWhenInUseUsageDescription" = "尖叫吧!小鸡仔! 将使用你的位置";
"NSLocationWhenInUseUsageDescription" = "尖叫吧!小鸡仔! 将在应用运行期间使用你的位置";
"NSLocationAlwaysUsageDescription" = "尖叫吧!小鸡仔! 将一直使用你的位置";
"NSMicrophoneUsageDescription" = "尖叫吧!小鸡仔! 将使用你的麦克风";
"NSUserTrackingUsageDescription" = "该标识符将用于向您投放个性化广告";

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 11c01c2681a51ef4984c1dc90d513b2b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 00fdedd853f9b4bd8b2bab71a5f31ac0
guid: 94e43f1e6266b401c9f7531a8c413ab0
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -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

View File

@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: 3d87280b481704a97aa535b847aaf582
TextScriptImporter:
guid: 7beaab0005a8c45b985ed3834b49f6b5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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";
}
}

View File

@ -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;
}
}

View File

@ -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()

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: fca17a851778e4fc098dcc4ee7ea79be
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}
}
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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,
}

View File

@ -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; // 赋值
}
}

View File

@ -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());
}
}

View File

@ -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("不 是第一天登录");
}
}
}

View File

@ -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
}

View File

@ -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);
}
}
}
}

View File

@ -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";
}

View File

@ -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();

View File

@ -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());
}
}

View File

@ -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);
}
});
}

View File

@ -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);
}
}

View File

@ -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()

View File

@ -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();
}

View File

@ -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();
}
}

View File

@ -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();
}
});
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 14356dc9a8552487883cb10556daf5b7
guid: 280bc1f07de0b47dca18f2c1ae47b020
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b352bcee83fc04a0c84e8d56fbbf1ea2
guid: d593d4318dbe74bc596a591549ee75d5
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d9a045a313aa35b47944161eb69ce054
guid: 0382ea99170c4407c9567e7943eeb050
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -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
}

View File

@ -1,7 +1,5 @@
fileFormatVersion: 2
guid: 9c904e974bef943bca64c6dfa3a37356
timeCreated: 1554811793
licenseType: Pro
guid: 76c8624dacb844b03bb8a32a7305348b
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -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>
@ -239,7 +131,7 @@ public static class ToukaUtils
TimeSpan timeSpan = dateCurr - dateOld;
Debug.Log("timeSpan.Seconds : " + timeSpan.TotalMinutes);
if(timeSpan.TotalMinutes >= 24 * 60)
if (timeSpan.TotalMinutes >= 24 * 60)
{
Debug.Log("不是新用户了");
return false;
@ -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
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0c6bb316782354791a6df23332a4ee5e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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