以前取得した Xamarin のライセンスを有効活用しようと、
Xamarin Studio と CocosSharp を使ってアプリを作ってみています。
1.7.0 はまだpre1バージョンだったので、あえて 1.6.2.0 にダウングレードして使い始めました。
(Official NuGet Gallery から取得できる CocosSharp PCL)
とりあえず各グラフィックス機能の使い方を確認しようと、
SpriteだったりLabelだったりをテストしていたところ、いきなり独自フォントが表示されない問題に躓きました。
var label = new CCLabel("hello world", "myfont.ttf", 30, CCLabelFormat.SystemFont); AddChild(label);
たったこれだけのコード。。
参考にした CoinTime というサンプルプロジェクトを参考に、色々試して見るもうまくいかない。
https://developer.xamarin.com/samples/mobile/CoinTime/
何でだろうとさらに調査したところ、なんと普通に不具合だそうです。
- https://forums.xamarin.com/discussion/54620/cclabel-with-custom-truetype-font-not-working-on-android-ios
- https://github.com/mono/CocosSharp/issues/320
1.7.0.0 pre2 でようやく修正されるって・・・どれだけ使われてないの・・・
自力でパッチを当てようと試みた結果
幸い CocosSharp はオープンソースプロダクトなので、自力でパッチを当てることが可能です。
(ただしうまくいくとは言ってない)
README を読みながらソースを git clone し、 git submodule update を実行。
Xamarin Studioでソリューションファイルを開く前に、下記のおまじないを実行します。
mono MonoGame/Protobuild.exe default.build
そして、CocosSharp.iOS.sln を開いてバグを修正し、プロジェクトをビルド。
できあがった CocosSharp.dll を元々あった CocosSharp.dll と差し替えて実行すると、先のコードのままで独自フォントが利用できるようになりました。
いきなりパッチ当てる必要が出てくるとは、幸先悪いなーという感じですが、とりあえずこれで先に進めそう。
Android版のdllも同じようにビルドして配置したところエラーが出たけど無視。
Android版なんてなかった。