【ハルシオンブログ】夏のビルド大作戦終了のおしらせ。結局Unity2019で最終ビルドしたよ。
おはようございます!坂内です!
本日はずっとハマっていたビルドの続報。
先週のこの記事。
【ハルシオンブログ】3週間かかったビルドがようやく終盤になりましたのでご報告します。Admob+アドフリくん+NCMBのビルドについて。
から、さらにいじってみた。
現状でのビルド環境
<環境>
Unity2019.1.8f1
- NCMB.4.0.0
- TapjoyUnityPlugin_v12.3.1
- GoogleMobileAds-v3.18.0
- adfurikunSDK_Unity_moviereward_3_0_1
- Social-Connector v0.5.0
先週のビルドで、新たにSocial-Connectorが動かないという問題が発生。
また、先週の時点ではTapjoyが微妙に動かない、どうしようといったことがあったが、今回解消。
また、Unity2018以前でTextMeshProを使っていると、Unity2019にしたときにこんなエラーが出ることがある。
こんな時には、「\UnityProject\XXXXXXX\Library\PackageCache\com.unity.textmeshpro@2.0.1\」を丸ごと消すといいが、Unityを起動する度に同じエラーがでるのを何とかできないだろうか・・・・・
さて、今回のビルド。
Plugins/Androidと、Plugins/Android/libの中身は前回と同じ。
mainTemplate.gradleに変化あり。
【Plugins>Android>mainTemplate.gradle】
あ、ちなみに前回書いていませんでしたが、proguard-userの中身はこんな感じ。
何が何だかわかりませんが、一応これで動いてます。
【Plugins/Android/proguard-user.txt】
これで、一通り全部が動いている感じです。
もちろんゲーム内課金も全部動いてますよ。
これで、ビルド大作戦の最終報告とさせて頂きます。
では!あでゅ~ノシ
本日はずっとハマっていたビルドの続報。
先週のこの記事。
【ハルシオンブログ】3週間かかったビルドがようやく終盤になりましたのでご報告します。Admob+アドフリくん+NCMBのビルドについて。
から、さらにいじってみた。
現状でのビルド環境
<環境>
Unity2019.1.8f1
- NCMB.4.0.0
- TapjoyUnityPlugin_v12.3.1
- GoogleMobileAds-v3.18.0
- adfurikunSDK_Unity_moviereward_3_0_1
- Social-Connector v0.5.0
先週のビルドで、新たにSocial-Connectorが動かないという問題が発生。
また、先週の時点ではTapjoyが微妙に動かない、どうしようといったことがあったが、今回解消。
また、Unity2018以前でTextMeshProを使っていると、Unity2019にしたときにこんなエラーが出ることがある。
/UnityProject/XXXXXXXX/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMPro_Private.cs(1916,130): error CS1644: Feature `out variable declaration' cannot be used because it is not part of the C# 4.0 language specification
こんな時には、「\UnityProject\XXXXXXX\Library\PackageCache\com.unity.textmeshpro@2.0.1\」を丸ごと消すといいが、Unityを起動する度に同じエラーがでるのを何とかできないだろうか・・・・・
さて、今回のビルド。
Plugins/Androidと、Plugins/Android/libの中身は前回と同じ。
mainTemplate.gradleに変化あり。
【Plugins>Android>mainTemplate.gradle】
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
}
}
allprojects {
repositories {
google()
jcenter()
maven {url "https://imobile-maio.github.io/maven" }
maven {url "http://fan-adn.github.io/nendSDK-Android-lib/library" }
flatDir {
dirs 'libs'
}
}
}
// Android Resolver Repos Start
([rootProject] + (rootProject.subprojects as List)).each { project ->
project.repositories {
def unityProjectPath = "file:///" + file(rootProject.projectDir.path + "/../../").absolutePath
maven {
url "https://maven.google.com"
}
maven {
url "https://maven.google.com/" // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
}
mavenLocal()
jcenter()
mavenCentral()
}
}
// Android Resolver Repos End
apply plugin: 'com.android.application'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Android Resolver Dependencies Start
implementation 'com.google.android.gms:play-services-ads:15.0.1' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
// Android Resolver Dependencies End
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
implementation 'com.applovin:applovin-sdk:8.1.4' // Applovin
implementation 'net.nend.android:nend-sdk:5.1.0' // Nend
implementation 'com.maio:android-sdk:1.1.9@aar' // Maio
implementation 'com.unity3d.ads:unity-ads:2.3.0' // UnityAds
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.31' // Kotlin
**DEPS**}
// Android Resolver Exclusions Start
android {
packagingOptions {
exclude ('/lib/armeabi/*' + '*')
exclude ('/lib/mips/*' + '*')
exclude ('/lib/mips64/*' + '*')
exclude ('/lib/x86/*' + '*')
exclude ('/lib/x86_64/*' + '*')
}
}
// Android Resolver Exclusions End
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '**BUILDTOOLS**'
defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
applicationId '**APPLICATIONID**'
multiDexEnabled true
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
}
lintOptions {
abortOnError false
}
aaptOptions {
noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
}
**SIGN**
buildTypes {
debug {
minifyEnabled **MINIFY_DEBUG**
useProguard **PROGUARD_DEBUG**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
jniDebuggable true
}
release {
minifyEnabled **MINIFY_RELEASE**
useProguard **PROGUARD_RELEASE**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
**SIGNCONFIG**
}
}
**PACKAGING_OPTIONS**
bundle {
language {
enableSplit = false
}
density {
enableSplit = false
}
abi {
enableSplit = true
}
}
}
allprojects {
configurations.all {
resolutionStrategy.force "com.google.android.gms:play-services-tasks:15.0.1"
}
}
**SOURCE_BUILD_SETUP**
あ、ちなみに前回書いていませんでしたが、proguard-userの中身はこんな感じ。
何が何だかわかりませんが、一応これで動いてます。
【Plugins/Android/proguard-user.txt】
-dontwarn com.google.vr.ndk.base.DaydreamApi
-keep class com.facebook.** {
*;
}
-keep class com.google.unity.** {
*;
}
-keep public class com.google.android.gms.ads.**{
public *;
}
-keep public class com.google.ads.**{
public *;
}
-keepattributes *Annotation*
-dontobfuscate
-keep class com.tsw.zipper {
public *;
}
-dontwarn android.support.v4.**
-dontwarn com.google.android.gms.**
-dontwarn com.google.firebase.**
-keep interface jp.maio.sdk.android.**
-keep class jp.maio.sdk.android.** {*;}
-dontwarn jp.maio.sdk.android.**
-keep interface com.applovin.sdk.**
-keep class com.applovin.** { *; }
-dontwarn com.applovin.**
-keep class net.nend.android.** { *; }
-dontwarn net.nend.android.**
-keep interface jp.tjkapp.adfurikunsdk.moviereward.**
-keep class jp.tjkapp.adfurikunsdk.moviereward.** {
public *;
}
-keep class com.glossomads.** { *; }
-dontwarn jp.tjkapp.adfurikunsdk.moviereward.**
-dontwarn android.webkit.**
-keep interface com.unity3d.player.**
-keep class com.unity3d.player.**
-dontwarn com.unity3d.player.**
-keep class com.tapjoy.** { *; }
-keep class com.moat.** { *; }
-keepattributes JavascriptInterface
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.tapjoy.**
これで、一通り全部が動いている感じです。
もちろんゲーム内課金も全部動いてますよ。
これで、ビルド大作戦の最終報告とさせて頂きます。
では!あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】int配列をfloatの配列に変換したかったとき
こんにちは。
大坂です。
タイトル通り配列の型変換について、普通にCast使ってできるかと思ったらできなかったので・・・。
これだとできない。
とまぁこんな感じで同じ長さの配列作ってCopyToを使えばいいって話でした。
すごく短いですが今日はこれでノシ
大坂です。
タイトル通り配列の型変換について、普通にCast使ってできるかと思ったらできなかったので・・・。
これだとできない。
float[] testFloatArray = testIntArray.Cast<float>().ToArray<float>();
これもできない。float[] testFloatArray = (float[])testIntArray.Cast<float>();
こんな感じでやるとできます。int[] testIntArray = { 1, 2, 3 };
float[] testFloatArray = new float[testIntArray.Length];
testIntArray.CopyTo(testFloatArray, 0);
とまぁこんな感じで同じ長さの配列作ってCopyToを使えばいいって話でした。
すごく短いですが今日はこれでノシ
Category: Androidアプリ紹介
【ハルシオンブログ】3週間かかったビルドがようやく終盤になりましたのでご報告します。Admob+アドフリくん+NCMBのビルドについて。
おはようございます。坂内っす。
ようやく3週間の長い戦いだったビルド戦、だいたい乗り切った感じです。
だいたい最終報告をさせて頂きます。
<環境>
Unity2017.4.30f1
- NCMB.4.0.0
- TapjoyUnityPlugin_v12.3.1
- GoogleMobileAds-v3.18.0
- adfurikunSDK_Unity_moviereward_3_0_1
この環境でのGradleビルドが全然できんかったのですよ。
やっとこさ、まともに動くところまでもってきました!
ただまだ、Tapjoyのウォールが出ないとか色々ありますが・・・・
これでとりあえず、以下の動作が確認できました。
・Admobがでる。バナー+インステ
・アドフリくんがでる。動画ネイティブ+動画リワード
・NCMBがつかえる。
最終的なPluginフォルダの中身はこちら。
【Plugins>Android】

※play-services-measurement-base-15.0.0 こいつだけバージョンが違くて気持ち悪いが、こいつ入れないと動画やバナータップ後にアプリに戻ると落ちるんだよね。
【Plugins>Android>lib】

【Plugins>Android>mainTemplate.gradle】
【手順】①~④は順不同でもいいんじゃないかな?
①ニフクラ Import
②アドフリくん Import
③Admob Import
④タップジョイ Import
⑤いらないaar,jarを消す
⑥com.google.android.gmsのバージョンを合わせるために、「Assets>GoogleMobileAds>Editor>GoogleMobileAdsDependencies.xml」をいじる
<pre class="prettyprint"><code>
<dependencies>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-ads:15.0.1">
<repositories>
<repository>https://maven.google.com/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="Google-Mobile-Ads-SDK" version="~> 7.42.1">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>
⑦Resolverしてみる。

一応この時点でビルドは通るようになった。
今まで使ってたアドフリくんが古かったため、最新の3系ではそのままでは動画が出ないという問題があったが、コードいじって動くように。
あとは、本当にTapjoyのオファーウォールをどうするか。
動かないならいっそのこと消してしまおうか・・・・
いやー ほんと長い戦いだった・・・・ポケガ1,2の64ビット対応しようとして、Gradle初めて触ったのが行けなかったか・・・凄い時間がかかってしまった。
今後また各SDKのバージョンが変わると動かなくなりそうな予感しかしませんが、今のところこれで動いています。
64bit対応や、NCMBが古いと今後動かなくなる等で、最新のSDKにしてGradleビルドでハマった方がいたら参考になれば幸いです。
お手伝いしてくれた、アドフリくんに感謝m(_ _)m
では、あでゅ~ノシ
ようやく3週間の長い戦いだったビルド戦、だいたい乗り切った感じです。
だいたい最終報告をさせて頂きます。
<環境>
Unity2017.4.30f1
- NCMB.4.0.0
- TapjoyUnityPlugin_v12.3.1
- GoogleMobileAds-v3.18.0
- adfurikunSDK_Unity_moviereward_3_0_1
この環境でのGradleビルドが全然できんかったのですよ。
やっとこさ、まともに動くところまでもってきました!
ただまだ、Tapjoyのウォールが出ないとか色々ありますが・・・・
これでとりあえず、以下の動作が確認できました。
・Admobがでる。バナー+インステ
・アドフリくんがでる。動画ネイティブ+動画リワード
・NCMBがつかえる。
最終的なPluginフォルダの中身はこちら。
【Plugins>Android】

※play-services-measurement-base-15.0.0 こいつだけバージョンが違くて気持ち悪いが、こいつ入れないと動画やバナータップ後にアプリに戻ると落ちるんだよね。
【Plugins>Android>lib】

【Plugins>Android>mainTemplate.gradle】
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
}
allprojects {
repositories {
google()
jcenter()
maven {url "https://imobile-maio.github.io/maven" }
maven {url "http://fan-adn.github.io/nendSDK-Android-lib/library" }
flatDir {
dirs 'libs'
}
}
}
// Android Resolver Repos Start
([rootProject] + (rootProject.subprojects as List)).each { project ->
project.repositories {
def unityProjectPath = "file:///" + file(rootProject.projectDir.path + "/../../").absolutePath
maven {
url "https://maven.google.com/" // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
}
mavenLocal()
jcenter()
mavenCentral()
}
}
// Android Resolver Repos End
apply plugin: 'com.android.application'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:multidex:1.0.1'
// Android Resolver Dependencies Start
implementation 'com.google.android.gms:play-services-ads:15.0.1' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
// Android Resolver Dependencies End
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
implementation 'com.applovin:applovin-sdk:8.1.4' // Applovin
implementation 'net.nend.android:nend-sdk:5.1.0' // Nend
implementation 'com.maio:android-sdk:1.1.9@aar' // Maio
implementation 'com.unity3d.ads:unity-ads:2.3.0' // UnityAds
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.31' // Kotlin
**DEPS**}
// Android Resolver Exclusions Start
android {
packagingOptions {
exclude ('/lib/armeabi/*' + '*')
exclude ('/lib/mips/*' + '*')
exclude ('/lib/mips64/*' + '*')
exclude ('/lib/x86/*' + '*')
exclude ('/lib/x86_64/*' + '*')
}
}
// Android Resolver Exclusions End
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '**BUILDTOOLS**'
defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
applicationId '**APPLICATIONID**'
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
}
lintOptions {
abortOnError false
}
aaptOptions {
noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
}
**SIGN**
buildTypes {
debug {
minifyEnabled **MINIFY_DEBUG**
useProguard **PROGUARD_DEBUG**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
jniDebuggable true
}
release {
minifyEnabled **MINIFY_RELEASE**
useProguard **PROGUARD_RELEASE**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
**SIGNCONFIG**
}
}
**PACKAGING_OPTIONS**
bundle {
language {
enableSplit = false
}
density {
enableSplit = false
}
abi {
enableSplit = true
}
}
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.0.1'
}
}
}
}
**SOURCE_BUILD_SETUP**
【手順】①~④は順不同でもいいんじゃないかな?
①ニフクラ Import
②アドフリくん Import
③Admob Import
④タップジョイ Import
⑤いらないaar,jarを消す
⑥com.google.android.gmsのバージョンを合わせるために、「Assets>GoogleMobileAds>Editor>GoogleMobileAdsDependencies.xml」をいじる
<pre class="prettyprint"><code>
<dependencies>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-ads:15.0.1">
<repositories>
<repository>https://maven.google.com/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="Google-Mobile-Ads-SDK" version="~> 7.42.1">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>
⑦Resolverしてみる。

一応この時点でビルドは通るようになった。
今まで使ってたアドフリくんが古かったため、最新の3系ではそのままでは動画が出ないという問題があったが、コードいじって動くように。
あとは、本当にTapjoyのオファーウォールをどうするか。
動かないならいっそのこと消してしまおうか・・・・
いやー ほんと長い戦いだった・・・・ポケガ1,2の64ビット対応しようとして、Gradle初めて触ったのが行けなかったか・・・凄い時間がかかってしまった。
今後また各SDKのバージョンが変わると動かなくなりそうな予感しかしませんが、今のところこれで動いています。
64bit対応や、NCMBが古いと今後動かなくなる等で、最新のSDKにしてGradleビルドでハマった方がいたら参考になれば幸いです。
お手伝いしてくれた、アドフリくんに感謝m(_ _)m
では、あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】Unityのバージョン変えたらデータのSerialize後にDesirializeができなくなった!そんな時の解決方法の一つ。
こんにちは、坂内です。
みなさんご自分のアプリは64対応してますか?
うちのポケガはしていませんでした。
ってことで、64対応をしようとしたままドはまり中です。
まぁ その中で1点Serialize、Desirializeについて分かったことをご報告。
現在ポケットガールにて、保存するデータをシリアライズしてPlayerPrefabに保存とかしてます。
もちろんロード時にはデシリアライズしてます。
簡単にかつ「64ビット対応するなら新しいUnityにしちゃえ」ってことで、Unity2017⇒Unity2019を試していたら、起動時に以下のようなエラーが出て動かなくなりました。
え?ロードできない?
Unity2017でゲーム内保存⇒Unity2017でロード 〇
Unity2019でゲーム内保存⇒Unity2019でロード 〇
Unity2017でゲーム内保存⇒Unity2019でロード ×
Unity2019でゲーム内保存⇒Unity2017でロード ×
えーーーー!うっそでしょー!
バージョン変えたからって、ロードできなくなるなんて今までなかったよ!?
めっちゃ調べた結果、海外のフォーラム(どこか忘れた)で、以下のようなやり取りがあった。
「Script Runtime Version同じか?それが違うとシリアライズデシリアライズあわねえよ」
まじかー!!!
ってことで確認。
Unity2017 .NET 3.5 Equivalent
Unity2019 .NET 4.x Equivalent
あぁー違う!
ってことで、Unity2019の方を.NET3.5 に変えたらいけたー!!!
なんかRuntimeVersion違うとだめらしいんで、皆さんお気をつけをば!
さて、今日もビルドのトライアルアンドエラーの日々よ。
早く、ビルド作業終わらせたい・・・・あでゅ~ノシ
みなさんご自分のアプリは64対応してますか?
うちのポケガはしていませんでした。
ってことで、64対応をしようとしたままドはまり中です。
まぁ その中で1点Serialize、Desirializeについて分かったことをご報告。
現在ポケットガールにて、保存するデータをシリアライズしてPlayerPrefabに保存とかしてます。
もちろんロード時にはデシリアライズしてます。
簡単にかつ「64ビット対応するなら新しいUnityにしちゃえ」ってことで、Unity2017⇒Unity2019を試していたら、起動時に以下のようなエラーが出て動かなくなりました。
SerializationException: The keys for this dictionary are missing.
System.Collections.Generic.Dictionary`2[TKey,TValue].OnDeserialization (System.Object sender) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent () (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) (at <1f0c1ef1ad524c38bbc5536809c46b48>:0)
XXXXXXXXXXX.Load[T] (System.String prefKey) (at Assets/Scripts/DATA/XXXXXXXXXXX.cs:38)
XXXXXXXXXXX.load () (at Assets/Scripts/DATA/XXXXXXXXXXX.cs:73)
YYYYYYYYYY.Load () (at Assets/Scripts/DATA/YYYYYYYYYY.cs:220)
ZZZZZZZZZZZZ.Start () (at Assets/Scripts/TITLE/ZZZZZZZZZZZZ.cs:38)
え?ロードできない?
Unity2017でゲーム内保存⇒Unity2017でロード 〇
Unity2019でゲーム内保存⇒Unity2019でロード 〇
Unity2017でゲーム内保存⇒Unity2019でロード ×
Unity2019でゲーム内保存⇒Unity2017でロード ×
えーーーー!うっそでしょー!
バージョン変えたからって、ロードできなくなるなんて今までなかったよ!?
めっちゃ調べた結果、海外のフォーラム(どこか忘れた)で、以下のようなやり取りがあった。
「Script Runtime Version同じか?それが違うとシリアライズデシリアライズあわねえよ」
まじかー!!!
ってことで確認。
Unity2017 .NET 3.5 Equivalent
Unity2019 .NET 4.x Equivalent
あぁー違う!
ってことで、Unity2019の方を.NET3.5 に変えたらいけたー!!!
なんかRuntimeVersion違うとだめらしいんで、皆さんお気をつけをば!
さて、今日もビルドのトライアルアンドエラーの日々よ。
早く、ビルド作業終わらせたい・・・・あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】3Dオブジェクトのワイヤーフレーム化。
こんにちは。大坂です。
週末は3連休ですが天気が悪いようですね。
さて今週もちょいネタ。
3Dオブジェクトをワイヤーフレーム化するお話。
ちょっと使うことがあったので、ご紹介。
こんなのを書いて対象のオブジェクトにくっつけるだけなんですが。
実行するとこんな感じになりますね。

なんか影がついちゃってますね。
影がいらない場合は対象のmaterialを適当に変えてあげます。


全体が白くなりますね。
materialの色を変えたら色も変えられます。

という感じで簡単にできましたよってお話。
ではまたノシ
週末は3連休ですが天気が悪いようですね。
さて今週もちょいネタ。
3Dオブジェクトをワイヤーフレーム化するお話。
ちょっと使うことがあったので、ご紹介。
こんなのを書いて対象のオブジェクトにくっつけるだけなんですが。
void Start()
{
MeshFilter meshFilter = GetComponent<MeshFilter>();
meshFilter.mesh.SetIndices(meshFilter.mesh.GetIndices(0), MeshTopology.LineStrip, 0);
}
実行するとこんな感じになりますね。

なんか影がついちゃってますね。
影がいらない場合は対象のmaterialを適当に変えてあげます。


全体が白くなりますね。
materialの色を変えたら色も変えられます。
MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
meshRenderer.material.color = Color.red;

という感じで簡単にできましたよってお話。
ではまたノシ
Category: 開発日記(Unity)
【ハルシオンブログ】ListでほしいものをFindするときに、まとめてとる方法や、Findの複数条件が使えることについて
こんにちは!坂内っす。
UnityでList使ってますか?
List<クラス>
で、指定クラスのオブジェクトがいっぱい入るリスト作れますよね。
よく使ってます。
例えばこんなクラスがあるとします。
【AAA.cs】
で、こんな感じで3個のAAAオブジェクトがListに入れます。
以前の記事で、Findを使って1つのオブジェクトを取り出すっていうのはやっています。
例えば「aaa.Noが2のモノを取り出す」って場合はこんな感じ
これで、a1として入れたものが取り出せます。
では「aaaTypeが0のモノをすべて」取り出すにはどうすればいいでしょうか?
こんな感じで複数のモノも取れます。
また、複数の検索条件ももちろん使うことができます。
これであなたもFindマスター(だったらいいよね)
ってことで、是非ListとFindをご使用ください。多様していいのか分かりませんが!
あでゅ~ノシ
UnityでList使ってますか?
List<クラス>
で、指定クラスのオブジェクトがいっぱい入るリスト作れますよね。
よく使ってます。
例えばこんなクラスがあるとします。
【AAA.cs】
public class AAA
{
public int aaaNo;
public int aaaType;
public string aaaName;
}
で、こんな感じで3個のAAAオブジェクトがListに入れます。
using System.Collections.Generic;
using UnityEngine;
public class Scripts20190708 : MonoBehaviour
{
List aaaAry = new List();
void Start()
{
AAA a0 = new AAA();
a0.aaaNo = 0;
a0.aaaType = 0;
a0.aaaName = "あいうえお";
aaaAry.Add(a0);
AAA a1 = new AAA();
a1.aaaNo = 1;
a1.aaaType = 0;
a1.aaaName = "かきくけこ";
aaaAry.Add(a1);
AAA a2 = new AAA();
a2.aaaNo = 2;
a2.aaaType = 1;
a2.aaaName = "さしすせそ";
aaaAry.Add(a2);
}
}
以前の記事で、Findを使って1つのオブジェクトを取り出すっていうのはやっています。
例えば「aaa.Noが2のモノを取り出す」って場合はこんな感じ
AAA no2Object = aaaAry.Find(x => x.aaaNo == 2);
これで、a1として入れたものが取り出せます。
では「aaaTypeが0のモノをすべて」取り出すにはどうすればいいでしょうか?
List allType0Obj = aaaAry.FindAll(x => x.aaaType == 0);
こんな感じで複数のモノも取れます。
また、複数の検索条件ももちろん使うことができます。
AAA no2Type1Obj = aaaAry.Find(x => x.aaaNo == 2 && x.aaaType == 1);
これであなたもFindマスター(だったらいいよね)
ってことで、是非ListとFindをご使用ください。多様していいのか分かりませんが!
あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】今更ですがInspectorに計算式が書けます
こんにちは。
大坂です。
今更な話題ですがInspectorの座標とかのところで計算式が使えます。
連続して一定の距離とか動かして配置したいときとかには便利ですかね?
UIならLayoutGroup系使ったらいいんですが。(HorizontalLayoutGroupとか)
まぁそれはそれとしてこんな感じで書けます。

Enter押してあげるとちゃんと計算した結果を出してくれますね。
1つのオブジェクトを1回やるだけなら普通に暗算したほうが早いんですが、
複数オブジェクトをやっていくとなると間違いも少なくなるので便利になるかもしれませんね!
今週も短いですがこれにてーノシ
大坂です。
今更な話題ですがInspectorの座標とかのところで計算式が使えます。
連続して一定の距離とか動かして配置したいときとかには便利ですかね?
UIならLayoutGroup系使ったらいいんですが。(HorizontalLayoutGroupとか)
まぁそれはそれとしてこんな感じで書けます。

Enter押してあげるとちゃんと計算した結果を出してくれますね。
1つのオブジェクトを1回やるだけなら普通に暗算したほうが早いんですが、
複数オブジェクトをやっていくとなると間違いも少なくなるので便利になるかもしれませんね!
今週も短いですがこれにてーノシ
Category: 開発日記(Unity)
【ハルシオンブログ】Google Indie Games Festival 2019 ファイナルいってきたぞおおーー!!!!
こんにちは、坂内っす。
6月29日はGoogle Indie Games Festival 2019 ファイナルイベントの日でした。
それってなーに?って方はこちら。
https://indiegamesshowcase.withgoogle.com/intl/ja_jp/
アプリ開発者の端くれということで、行ってまいりました。

こんなっ感じでトップ20が!
・10時開演
・13時まで各ブースで試遊したり投票したり
・14時くらいからトップ10の発表
・その後トップ10の人は、一人5分のプレゼンをし、トップ3を決める
といった流れでした。
まずは試遊っす。
全部は回ってないですが・・・





そして、ここがイベント会場!
人入る前にパシャリ

試遊するとスタンプがもらえるスタンプラリーをすると、投票用のコインとドロイド君人形がもらえます。

なんと!レアなやつが入ってました!

そしてトップ10の発表!

どれも素晴らしいアプリです!
その後10人のそれぞれのプレゼン。
最後にトップ3の発表です!

あ、なんかファイナルイベントの動画があるようなので、気になる方はそちらをチェック!
https://events.withgoogle.com/indie-games-festival-2019-japan-1/youtubelive/#content
その後の飲み会では、トップ20に入賞した方々も来たぞ!
・Infection - 感染 - CanvasSoftさん
・MeltLand - メルトランド - Masataka Hakozakiさん
・相撲巻 - SumoRoll 横綱への道 Studio Kingmoさん
・ペルセポネ - Rinaldさん
・なぞってたしてけすパズル タシテケス - mottekeさん
楽しい飲み会だった!
トップ20の皆様お疲れ様でした!
イベントとしてはとても楽しく素敵なイベントだった!
また来年も機会があれば行きたいっすね!
入賞?したいけど、来年のこの時期までにゲーム出来上がるかどうか・・・・
ではあでゅ~ノシ
6月29日はGoogle Indie Games Festival 2019 ファイナルイベントの日でした。
それってなーに?って方はこちら。
https://indiegamesshowcase.withgoogle.com/intl/ja_jp/
アプリ開発者の端くれということで、行ってまいりました。

こんなっ感じでトップ20が!
・10時開演
・13時まで各ブースで試遊したり投票したり
・14時くらいからトップ10の発表
・その後トップ10の人は、一人5分のプレゼンをし、トップ3を決める
といった流れでした。
まずは試遊っす。
全部は回ってないですが・・・





そして、ここがイベント会場!
人入る前にパシャリ

試遊するとスタンプがもらえるスタンプラリーをすると、投票用のコインとドロイド君人形がもらえます。

なんと!レアなやつが入ってました!

そしてトップ10の発表!

どれも素晴らしいアプリです!
その後10人のそれぞれのプレゼン。
最後にトップ3の発表です!

あ、なんかファイナルイベントの動画があるようなので、気になる方はそちらをチェック!
https://events.withgoogle.com/indie-games-festival-2019-japan-1/youtubelive/#content
その後の飲み会では、トップ20に入賞した方々も来たぞ!
・Infection - 感染 - CanvasSoftさん
・MeltLand - メルトランド - Masataka Hakozakiさん
・相撲巻 - SumoRoll 横綱への道 Studio Kingmoさん
・ペルセポネ - Rinaldさん
・なぞってたしてけすパズル タシテケス - mottekeさん
楽しい飲み会だった!
トップ20の皆様お疲れ様でした!
イベントとしてはとても楽しく素敵なイベントだった!
また来年も機会があれば行きたいっすね!
入賞?したいけど、来年のこの時期までにゲーム出来上がるかどうか・・・・
ではあでゅ~ノシ
Category: その他日記
| h o m e |