CocosSharpでClippingNodeでクリッピングされない問題

またまた問題にぶつかりましたよっと・・・
クリッピングしたいのに一切クリッピングされずに表示されてしまう。
むしろStencil(マスク用のSprite)がそのまま表示されているという謎の挙動。

昔からある既知の不具合の一つなんですかね。

Issueには上がっているものの修正されてはいないようです。
GameDrawPrimitives のアルファ処理がiOSやMacでは動作しないといった原因のようなのですが、Androidの実機でも同様の症状が出ました。

CocosSharpはまだちょっと早いかもしれませんね・・・

CocosSharpで独自フォントが表示されない問題

以前取得した 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/

何でだろうとさらに調査したところ、なんと普通に不具合だそうです。

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版なんてなかった。