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だが、とりあえず結合後のオブジェクトに当たり判定がつく。