2020年3月18日 星期三

typescript 高階函數

寫了一陣子typescript,碰到以下類似的問題,都習慣跑2層for迴圈解掉,
不過明明有好用的函數可用,這邊就簡單的練習一下,並記錄下來。

依某條件建立新的陣列
let c1 = [1,2,3,4,5,6,7,8,9];
let c2 = c1.filter(c=> c > 5 && c < 7 )
                 .map(c => "no"+c );
console.log(c2);

由一個陣列c1產生一個新的陣列c2
let c1 = [1,2,3,4,5,6,7,8,9];
let c2 = c1.map(c=> "no"+c);
console.log(c2);

用一個陣列c2刪除另一個陣列c1
let c1 = [1,2,3,4,5,6,7,8,9];
let c2 = [5,8];
c1 = c1.filter(c => !c2.some(value=> c === value ) );
console.log(c1);

2019年6月8日 星期六

[敬請配合]:在 2019 年 8 月 1 日前為應用程式建立 64 位元版本 (for unity3d)

收到了google寄來的訊息,明明沒有要更新,但又要對app改版了。

這次的重點:AndroidManifest.xml沒照說明填入meta-data
的部份,可是一進遊戲就會跳出的.
https://developers.google.com/admob/unity/start

版本:
Unity3d 2018 2.2.f1

下載:
android-ndk-r13b
https://developer.android.com/ndk/downloads/older_releases.html

admob v3.17
https://github.com/googleads/googleads-mobile-unity/releases/tag/3.17.0

google play service 0.9.64
https://github.com/playgameservices/play-games-plugin-for-unity

然後刪除專案的
Assets/GoogleMobileAds
Assets/GooglePlayGames
Assets/PlayServicesResolver

重新導入上面的2個plugin,別忘了unity3d的ndk也要設定為r13b

這邊有64位說明:
https://developer.android.com/distribute/best-practices/develop/64-bit

這次有點順利,還真不習慣啊。

2018年11月27日 星期二

cocos creator 1.9 EditBox 在Android功能不正常

在Android下,若打開輸入法的顯示字詞建議,EditBox,會有取不到文字的情況。
應急解法如下:
cocos2d-x-lite/cocos/platform/android/java/src/org/cocos2dx/lib/
下的Cocos2dxEditBox.java

找到
public void setInputMode(int inputMode)

在 this.setInputType這句之前

加上
this.mInputModeConstraints |= InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
把顯示字詞建議關閉即可。

2018年8月19日 星期日

HandleRewardBasedVideoFailedToLoad event received with message: no Fill

雖然也是收不到google獎勵廣告的問題,但有這次有點不太一樣。
功能一直都是正常的,只是突然某一天手機會一直收不到,只會吐標題的訊息。
還好還有別台android設備,試了一下是沒問題的。

猜是google play service又更新的關係吧,用了之前用過的方式:

http://chadgod.blogspot.com/2016/09/unity3d-no-resource-found-that-matches.html

手機上的設定->應用程式->Google Play 服務->管理空間->清除所有資料

這樣就可以了。

這和一般的no Fill錯誤不太一樣,有可能是因為手機上有開發帳號,再加上google play service新舊版本交替的關係吧。

2018年8月12日 星期日

Unity3D 2018 2.2.f1 + google play service + admob

照慣例,版本一換就要花些時間重試了:

mac下的安裝

Unity3D 版本 2018.2.2.f1

play-games-plugin-for-unity 版本 0.9.50
https://github.com/playgameservices/play-games-plugin-for-unity

Google Mobile Ads Unity Plugin 版本 v3.15.0
https://github.com/googleads/googleads-mobile-unity/releases/tag/v3.15.0

External Tools 的Android設定:
android sdk 需要 8.0

jdk 需要 1.8.1,安裝位置可能有些不同,但可以參考如下:
/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home

ndk 是用 r10e
要用IL2CPP就依它建議r13b

設定的地方也有下載鈕,就不列出下載處了。

然後啟動後就崩潰了。

試了以下2種方法選一種就可以解決了。
1. Build System 改為 internal
2. Assets/GooglePlayGames/Plugins/Android/GooglePlayGameManifest.plugin/AndroidMainfest.xml
    裡面的android:value=\ 3498522668 改成 android:value=\u0033498522668
    主要就是 \ 改為 \u003

這裡有解法
https://github.com/playgameservices/play-games-plugin-for-unity/issues/2254