HideInInspector の罠
public class Abc : MonoBehaviourみたいな変数を作る。
{
public GameObject mObj;
...
}
インスペクタでGUI的に mObj に値を割り当てた後に
やっぱりインスペクタでこのあたりを設定するのはやめよう、と思い
スクリプトだけを以下のように修正する。(この時インスペクタには触らない)
{すると、
[HideInInspector] GameObject mObj;
}
mObjに値が設定されているがインスペクタからは見えないようになってしまう。
.sceneファイルをテキストエディタで開いたら、
↓こんな感じの記述が残っているのが確認できるはず。
mObj: {fileID: 2020468654}
こうなってしまうとインスペクタや、C#のソースをいくら眺めても値を設定していないように見えるが、シーンファイルにて値が設定されてしまっているので何か変な挙動を行うことがあるはず。
注意したい。
なんでこんなのを見つけたかというと、
大人気アセット「NGUI (version3.0.2)」のサンプル「Popup List」がそうなっていて読み解くのに時間がかかってしまったから。
Android で UIAlertView の代わりになるようなものは AlertDialog
もう件名がすべて。iOSな人でAndroid不慣れな人の検索で引っ掛かれば。
AlertDialogクラスの使い方はオフィシャルか、以下のページとか参考に。
http://android.keicode.com/basics/ui-alertdialog.php
pushViewControllerした途端にアプリが落ちる時
端末もしくはシミュレータが iOS5系 で
pushViewControllerした途端にアプリが落ちる、この瞬間に落ちる場合↓
[self pushViewController:vc animated:YES];
でも、iOS6系なら落ちない場合、
たぶんxibファイルとかのオートレイアウトがONになってる。
ビルドでエラーにならないからアプリ完成間際になって発覚してビビる。
オートレイアウトのオフり方はこのへん。
http://d.hatena.ne.jp/paraches/20120928/1348838724
つーか
2013年11月現在、iOS5対応はもう対応しなくてもえーんちゃうか? と思うんだけど
対応しておけば一応2009年発売iPodTouchまでカバーできるのでまだ捨てられないとか。。。
Android SQLiteOpenHelper getWritableDatabase getReadableDatabase との関係
Android のSQLiteのラッパー、SQLiteOpenHelper
関数 getWritableDatabase getReadableDatabase、
こんな設計おかしいやん?
という挙動を見せるのでAndroidOSのソース(java)を見にいったら案の定おかしい。
これはアンドロイドOSの歴史に俺の名を刻むチャンス!
と思ったのもつかの間、最新版android-4.3.1_r1.0/ のバージョンだと修正されていることが判明。ちぇっ。
ソースはここで調べましたありがたいサービス。
https://sites.google.com/site/devcollaboration/codesearch
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
android-4.3.1_r1.0 未満ではこんな感じでおかしいです。
SQLiteOpenHelper クラスから派生して MyDBOpenHelper というクラスを作ったとした場合、
DBが無いときに
SQLiteOpenHelper.getReadableDatabase()
を呼ぶと
MyDBOpenHelper.getWritableDatabase()が実行される。つまり派生クラスの関数が呼ばれちゃう。
こうされちゃうと、オーバーライドした
MyDBOpenHelper.getWritableDatabase() で、何かの条件とかで NULLを返したい場合があったとしても、
迂闊にNULLを返すと
MyDBOpenHelper.getReadableDatabase()のほうがしくじることがあるのでカスタマイズ難しい。
具体的には俺がうまくいかなかったのは
「リードオンリーのDBにしたいのにできない」
ということです。
どちらにせよandroid-4.3.1未満の端末に対応しなきゃいけないので
リードオンリーのDBはうまく作れない、ということですね。
もっとローレベルのAPI叩いていけばできると思うけどめんどくさい。
C# で Too many characters in character literal
Application.LoadLevel('main');
で、「Too many characters in character literal」というエラーが出て
なんのこっちゃ? としばらく悩んでしまったんだけど、
なんのことはない文字列定義は '' じゃなくて "" で囲わないとあかん。JS脳。もしくはPHP脳。
androidのListView デフォルトのスタイル一覧
arrayAdapteradapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1);
と、よくサンプルに出てくる simple_list_item_1 以外の
デフォルトというか、googleが用意してくれているスタイル一覧表示のページ
select_dialog_singlechoice
select_dialog_multichoice
select_dialog_item
preference_category
list_content
custom_list_layout >>> ?
activity_list_item >>> ?
two_line_list_item
test_list_item
simple_spinner_item
simple_spinner_dropdown_item
simple_selectable_list_item
simple_list_item_single_choice
simple_list_item_multiple_choice
simple_list_item_checked
simple_list_item_activated_2
simple_list_item_activated_1
simple_list_item_2
simple_list_item_1
simple_gallery_item
simple_expandable_list_item_2
simple_expandable_list_item_1
simple_dropdown_item_1line