2014年4月29日火曜日

iTunes Connectでアプリの申請出すときにIDFAのオプションが出ない問題


iOSアプリ申請でハマりかけたのでメモ。

申請時の"Advertising Identifier"でアプリ内広告を使っているフレームワークがアプリに含まれる場合、

Does this app use the Advertising Identifier (IDFA)?

にYesチェックするんですが、その下に出るはずの設問が出なくて、Saveしようとしても

You must select how this app uses the Advertising Identifier (IDFA).

って怒られて進めない問題。ブラウザのAdblockが原因でした。。。一時停止してから再アクセスして下さい。

Safari+Adblock Plusは使ってる人が多そうなので、メモでした。
itunesconnect

2014年2月11日火曜日

Unity でライブコーディングを実現するアセットLivity

 

ライブコーディングといってもイベントなどで開発するあれではなくて。
今回試した「Livity」は、Unityエンジン上で直接コード編集ができて、しかも「オン・ザ・フライ」で変更が反映されるエディタ拡張アセット。

Livity
https://www.assetstore.unity3d.com/#/content/11281

ゲームを実行させながらいろいろコードに手が入れられる謎技術を搭載。
C#,UnityScript,Booと言語ごとにも販売しているけど、全部入りパックが割引だったので買ってみた。

使い方は簡単。
まずはアセット導入後、スクリプトを開こうとするといきなりLivityの機能でエディタ内に編集画面が出る。

で、オンザフライしたいスクリプトにusingディレクティブ Livity.Features.LiveCodingを追加し、
操作体調のメソッドの上で[Live]を宣言する。これで準備完了。(C#の場合。)

WS000004

オブジェクトを回転させるシンプルなスクリプトで試してみた。

この状態で実行ボタンを押すとY軸で回転するが、Livity内で数値を書き換えると即時反映される。なかなかに楽しい。
いちいちpublicプロパティにしてインスペクタで弄っていた数値まわりとかがすっきりするし、
なにより修正→また再生開始、の繰り返しで起きる時間ロスがまるっとなくなる。すばらしい。

たまにConsoleでエラー吐いたり、スクリプトの反映が不安定だったりと謎挙動が少し。
Livity内のコードとインスペクタで表示したコードが違っている場合は、インスペクタ側の歯車ボタンから
「Reset」を選んでやると最新に更新される。うまく動かない人は試してみよう。

もうひとつ強力なのがCodeWatches。Livity内で指定した変数の中身をリアルタイムで表示してくれる機能。
いちいち一時停止してログを確認しなくても、ぱっと見で正しい値が入っているかわかる。

スクリプトにusingディレクティブ Livity.Features.CodeWatchesを追加し、
Watch.Expression()の引数に監視したい変数を入れとくだけ。すると⇒の先に中身が表示される。

WS000005

今回の例はUpdateで足しこんでいるので高速で表示が変わっているが、これ単純に見やすい。
複数の変数を監視したいときなどはかなり強力だろうと思う。

Livity上での編集もそこそこ快適。補完もしっかり効く。
ただいまのところ、Ctrl+Sでセーブできなかったり、Ctrl+Zが効かなかったり妙な癖あり。(設定で変えられる?)
Livityですべてやるというよりは、スポット的な調整で使うといいのかもしれない。

2013年7月28日日曜日

初心者がものすごく陥りやすかったUnity Native Plugin使用時のXcodeビルドエラー。

何も知らんと行き当たりばったりやろうとするからこうなった。
開発中のUnity製IOSアプリにTwitter投稿機能つけたいなー、ということでUnity安藤さんのこちら

https://github.com/anchan828/social-connector

”SocialConnector”を利用しました。
プラグインをAssets/Plugins/iOSに配置していざBulid&Run!しようとしたら行かない。
Apple Match-O Linker Errorが出てビルドエラーで終了なんですわ。で、いろいろ調べて。

せいかい:
Xcode内でTwitter framework, Social fremoworkのライブラリを追加する。

xcodeScreen1

こんな初歩的なことに3時間費やしてしまいました。ゲロブタですみません。

Pluginだからと言って全部面倒見てくれるわけじゃないよ!というひとつ勉強になりました。

ちなみにUnity側で出ている「EntryPointNotFoundException:」はPC上でのプラグイン利用がUnity Proに限られることと関連してるぽい。

2013年2月3日日曜日

MonoDevelopで”~has line endings which differ from the policy settings.”の警告を黙らす

ソースファイルに日本語記入できるようにUTF-8とか文字コード変えると出るこの警告。
毎回出るとウザイのでポリシーを変えて出ないようにする。

Project→Solution Options→Source Code→Code Formatting→C#(またはJavascript) source codeの”Line endings”を変える。

Project > Solution Options > Source Code > Code Formatting >Text File > Line Endings

WS000000

とりあえず”Microsoft Windows”にしとけば警告出なくなったけどこれが正しいかは知らぬ

なおんないときもある。

2013年1月3日木曜日

Delegate?

※現状の理解メモ

Delegate  任意の関数をプロパティに登録できるオブジェクト。宣言時には引数指定のみ。
このオブジェクトをListにしたものに実装の参照をaddしていく。
実行時はforeachでListを回して、オブジェクトに対して直に関数呼び出しする。

匿名メソッド Delegate渡すメソッドを引数の中で実装する、名前なしメソッド。他から参照できない。

ラムダ式 匿名デリゲートを以下の書き方で記述する。
デリゲート型 = 引数 => 返り値;

ジェネリックPredicate<T>の場合は返り値boolのメソッドを書いて
Predicate<Text> pedicate = sometext => !sometext.Text.Contains(“A”);

何を言っているのか分からなくなったらリハビリ。

2012年12月4日火曜日

Rayを飛ばすか、箱ポリの当たり判定を取るか

箱ポリ32x32にしきつめたところをタッチして、その箱を検出したい。

依然作ったコードでは、マウス位置と重なっているかを箱ポリ自体が毎フレーム通知してくる仕組みだったが処理的にアレ

画面奥にRayを飛ばす方法をやってみることとする。

2012年12月1日土曜日

Draw Call Minimizerの現状と課題

今作ってるゲームはポリ箱を32x32でタイルして地形を作るのだが、
その後のDraw Call減らしとして著名な「Draw Call Minimizer」を触ってる。

■わかったこと
 ・テクスチャをタイリングしてると壊れる
  Meshをいっこにするのと同時にTextureも一枚に合体させるので、タイリングしてるオブジェクトつっこむと壊れる。
  対策調べたけど、「どうせオブジェクト一個になるんだからMeshをタイル一枚分に分割しちまおうぜ!」というトンデモ理論は発見。どうなんだそれ。

 ・Box Colliderは無くなる  Colliderの類を剥がされます。よって、ステージの床とかにはそのままでは使えん。

■小改造
 ・任意のタイミングでオブジェクト合体を走らせる
  使い方どおりそのまま結合したいオブジェクトの親GameObjectにアタッチすると
実行即結合になるので  start()を適当な関数名に書き換えて後から呼び出すように。
  これで使用前→使用後と効果のほどを確かめるわけです。

 ・Colliderを付ける
  Meshを結合しているfor文の中に以下を付け足す。
  go.AddComponent ("MeshCollider");
  go.GetComponent().sharedMesh = combinedMeshes[i]; 

  MexhColiderだが、とりあえず結合後のオブジェクトに当たり判定がつく。