なんかどうもうまくいかないUnityメモ

なにかやろうとするとめちゃくちゃ時間がかかる。とっても時間がかかったやつのメモ。


○Interactive Clothを動かすと落っこちる

箸にそばがついていてそのそばが揺ら揺らしてる。箸をプレイヤーがtransformで移動するとそばがついてきてくれない。ちょっとでも動かすと落っこちる。悩む。

Moving Prefab with Interactive Cloth in script
http://forum.unity3d.com/threads/moving-prefab-with-interactive-cloth-in-script.79943/

Interactive cloth, jittering when attached to a moving object
http://answers.unity3d.com/questions/173372/interactive-cloth-jittering-when-attached-to-a-mov.html

なんか箸のほうにRigidbodyをつけて、動かすときをすべてhashi.rigidbody.MovePositionにした。


○Interactive Clothをtransform.localScaleで伸び縮みさせると落っこちる

また悩んだ。そばを伸び縮みさせたいのにダメだあ。

Scaling cloth during runtime?
http://answers.unity3d.com/questions/56863/scaling-cloth-during-runtime.html

伸び縮みさせる前にtearFactorを1にして、伸び縮み終わったら0にすれば戻るって書いてあった。
けどあまりうまくいかない。しゃーないので、そば用カメラを追加して、まーFPSだからそばは自分の視線に向けて移動したいしな。それのClipping PlanesのFarをそばの器ギリギリにして器より下にあるInteractive Clothのそばを見えなくしたのがひとつ。でも荒ぶってるのでたまにはみだして見えるけどアキラメーター。
そしてどうしてもスケーリングしたい食べる処理のとき。そばの先端をLightWaveで(0,0,0)にしてそこを軸になってる状態で

———
sobaLen = sobaLen – 0.1f;
sobabouCloth = sobabou.GetComponent<InteractiveCloth>();
sobabouCloth.tearFactor = 1.0f;
sobabou.transform.localScale = new Vector3(1.0f, sobaLen, 1.0f);
sobabouCloth.tearFactor = 0.0f;
——–
みたいにtearFactorを毎度毎度スケール変える前とあとでいぢって、まぁなんとかなった。


○Interactive Clothをグリグリ動かしてるといきなり消えるときがある

これがたまにしか起こらなくて特定するのにめちゃくちゃ時間かかった、3日くらい。いちいちこういうので時間泥棒なUnity・・・。グリグリ動かしてると一瞬Interactive Clothが画面の外に出てしまうときがあってそうするといきなり消えるらしい。2年も前からのバグらしいよ。

Interactive cloth disappears
http://answers.unity3d.com/questions/291874/interactive-cloth-disappears.html

カメラの外に行くと消えるからもう一個カメラ追加してそこにはずっとフレームインしてるようにすれば消えないよとか書いてあったけどそば用にもうカメラ追加してまた追加すんのなんか嫌だなぁと。
なのでhashi.rigidbody.velocityで自動で動かすのをやめてUpdate()毎にVector3のx,y,zを足したやつを、WorldToViewportPointで変換して0,0-1,1にあるか見て外側だったら直すように。めんどくさ。。


○なんかFinderでみたらmetaファイルが邪魔

一人で作ってるからメタファイルなんていらないー。

Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事
http://tsubakit1.hateblo.jp/entry/20140613/1402670011

[メニュー] -> [Edit] -> [Project Settings] -> [Editor]
Editor Settings
Version Control Mode -> Hidden Meta Files


○デバイスの言語設定?

AppStoreにぶっ飛ばしたり、WebView表示したりするときにjaかenか判別したいよー。

【Unity】端末の言語環境を取得する
http://webhoric.com/apple/mac/unity/unity-systemlanguage

——–
//—————————————————————-
// Get Device Language
//—————————————————————-
private string getDeviceLanguage() {

string deviceLanguage = Application.systemLanguage.ToString();
if (AppDefine.DEBUG_LOG) Debug.Log(deviceLanguage);

// if(deviceLanguage == “Japanese”){
// Debug.Log (“日本語だよ”);
// } else if (deviceLanguage == “English”){
// Debug.Log (“英語だよ”);
//
// } else {
// Debug.Log (“他の言語だよ”);
// }

return deviceLanguage;
}
——–


○アプリのバージョン?

ややこしい。わけわからないコピペ。iOSとAndroidのネイティブ連携もっと楽にならない?いやそういうことしちゃうとマルチプラットホームの意味ないかしら。

インストールされているアプリのバージョンをチェックし、ストアに誘導する
http://qiita.com/jakais0041/items/0220685c6d3a724fd0d6


○Character ControllerとAnimatorが連動できない

Character Controllerをキャラに当てて、動かすのはAnimatorでMechanimとかで好きに動かしても階段とか壁とか貫通する。

MecanimSampleBeta7のgravityというシーンではMecanimとCharacterControllerの組み合わせであった。
これを参考にすると従来のCharacterControllerとAnimationコンポーネントのキャラクターをMecanimバージョンに移行する助けになると思う。
http://naskit.com/2012/09/17/unityのmecanim/

という記事があったけどMecanimSampleBeta7というのがどこをどうググっても見つからず断念。

仕方ないので、連動を諦めて、そば屋に到達するまでは不要なところをざっくり消したCharacterMotor.jsのUpadte()で
——–
function Update () {
// Move our character!
var velocity = Vector3(4,-5,0);
controller.Move (velocity*Time.deltaTime);
}
——-
とずっとまっすぐ動かして、そば屋の机にドカンとぶつかったらcsのスクリプトに全ての処理を譲渡してCharacterMotor.jsの自分をenabledをfalseにしてお役目終了にした。なんかアレを立てるとコレがダメになる、そういうのばっかりじゃないUnityって。

function OnControllerColliderHit (hit : ControllerColliderHit) {

if ((hit.normal-Vector3(-1.0,0.0,0.0)).sqrMagnitude<0.001) {
Debug.Log(“OnControllerColliderHit = hit.normal = “+hit.normal+”, name=”+controller.name);
soldierScript.soldierSetTable(controller.name);
this.enabled = false;
}
}


○カメラでカット割りみたくAnimationのTangentをConstantにしてパキッと場所を変えるんだけどpositionはいいんだけどrotationがなんかパキッと行かず1フレームだけ変な場所の絵が出て辟易する

AnimationもAnimatorもなんかLegacyとかバージョンとかで挙動が違ったりしてググってももうめちゃちゃくちゃ。
これってもうそろそろObj-CとSwiftでめちゃちゃくちゃなグーグルになるよね。Unityの場合” cs”とか” js”とか末尾につけてググる人が多いみたいなサジェスチョン。

TIPS – アニメーションの補間を完全に切る
http://japan.unity3d.com/blog/?p=290

これも2012年の記事なんだー。もう古いんちゃう?アップデートで直ってたりするんじゃないかなぁ。
うまく行ってるかようわからないけど、この方法にした。
でもなんか変。せっかくの見せ場なのにねカメラワークって。どうしてなんかUnityっぽい感じになってしまうのが悲しい。


○LightWaveのLayoutにAssetStoreで買ってきたFBXを読み込ますとエイリアンになる

[ファイル]→[入力]→[FBXファイル入力]でどーん。
UACK2012_run2_lws_‒_Layout™_NewTek_LightWave™_11_6_2__Mac64_
だめだこりゃ。。。


○LightWaveでFBX出力できるUVマップは一個だけ

いっくらやっても無理。駅の改札の四方の壁はUVでやりたいのでこのUVテクスチャはひとつにまとめる。床と天井はUVじゃなくて[q]で別のサーフェイスにして平面でてきとうに貼っておく。FBXにしてUnityで読み込ませたらMeshRendererのMaterialがUVと床と天井の三つできているから、床と天井はShaderのTilingのxとyをいぢってリピートにする。なのでテクスチャ用の画像はUVマップ用の壁と、床、天井で3枚用意してオケ。

でもいろいろ覚えたよ。
[F5] – サーフェイスエディタ : ここのサーフェイスがUnityのMeshのMaterialになるようだ。
[Ctrl]+hでポリゴンモードにして[w] – ポリゴン状態 : ここからSurfのプルダウンでサーフェイスを選べる
[F8] – 頂点マップ : UVマップのポリゴンを選んだり、ウェイトマップのポリゴンを選んだりする。UVマップは一個しか使えないからここで選んで右クリックで使えないやつを削除する。


○AssetStoreで買ってきた兵士のアニメーションがHumanoid型でないまま使っていて、他のかっこいいアニメーションをダウンロードしてきて動作させようとしたらAnimationがまっ黄っ黄ー。FBXのRigタブでHumanoid型にして、PrefubのやつのAnimatorのAvatorがいままでNoneだったからAvatarをセットしたら他のかっこいいアニメーションするようになったけど既存のアニメーションがガクガクしてしまう

なんか上下にガタガタガタガタって動いちゃうの。今までAvatarなしだったらちゃんとイケたのに。
レアケースらしくてググってもムダ。
試しにAvatarをNoneに戻すと今まで通りちゃんと動く。でも新しいAvatarを使用しているアニメーションはまっ黄っきーにもどっちゃう。詰んだか。せっかく、「走る」「食べる」「死ぬ」のモーションを今まで使ってきたのに他のかっこいい新しいAvatarのアニメーションの代替を探してきて今までのやつあきらめないといけないのか。
これが今悩み中→解決。

なんか古いほうにFBXについてきているAnimationをCmd+DでコピーしてAvatar搭載のやつに入れ直したらちゃんと動くっぽいな。もうわけわんないな。いつになったらアプリだせるのだろう。


○コリジョンのマスク

おかしい・・・知らぬ間にSettings系が全部リセットされていたorz…だから昨日いきなりmetaファイルとか復活したんだな・・・。
レイヤーの名前もリセットされてサブカメラのCullingMaskなんてUnknownName:10とかわけわかんない名前に変わってたよトホホ。
それに気付かず箸と丼の当たり判定をレイヤーマスクのように無効にしていたのに知らぬ間に復活していて、箸のRigidBodyさんが変な浮遊物体になってしまった。

Layer-Based Collision Detection.
http://docs.unity3d.com/Manual/LayerBasedCollision.html

箸とそばを新設のHashiレイヤーにして、
[Edit]→[Project Settings]→[Physics]で出てくる勝ち負け表みたいなやつのHashiの列を全部チェック外せばオケ。


○Skybox、LensFlare

クソッ消えた!

[Assets]→[Import Packages]→[Light Flares]、[Skyboxes]
[Edit]→[Render Settings]

レンズ フレア / Lens Flare
http://docs-jp.unity3d.com/Documentation/Components/class-LensFlare.html

Unity – 空テクスチャ(Skybox)を表示する
http://www40.atwiki.jp/spellbound/pages/1339.html


○LightWave11.6.2のモデラーでスケルゴンとウェイトマップ作ってレイアウトにオブジェクトを送ってスケルゴンをボーンに変換してFBX出力してUnityのHumanoid型で使う

Skelegon_Tree_と_Oyaji_lwo_‒_Modeler™_NewTek_LightWave™_11_6_2__Mac64_
Modelerでとなりのレイヤーでスケルゴンを作る。レイアウトに送る時はレイヤーを統合するよ。
スケルゴンは尻(Hip)を作って→Spine→Chestと上へ伸ばす、そこからL_ShoulderとR_Shoulderに分岐するけどShoulderはオプションぽいのでウェイトは与えないダミー的なボーン。
両方のShoulderからUpperArm→LowerArm→Handへ伸ばす。
さらにChestから上へHeadを伸ばす。
Hipに戻り斜め下へL_Waist、R_Waistと分岐する、これもShoulderと同じくオプションみたい。WaistからUpperLeg→LowerLeg→Footと両方伸ばせば完了。全部で20本。
オプション以外のやつを同じ名前でウェイトマップを作っていく。[Ctrl]+[h]のポリゴン選択ツールでウェイトにしたいポリゴンたちをぐるっと選択して[マップ]→[新規ウェイト]で名前を付ける。これを16個。こういうのもう自動でやっとくれへんかなぁ。できたらスケルゴンのレイヤーで[Cmd]+[x]、モデルのレイヤーへ[Cmd]+[v]してレイヤーを統合する。
[レイヤー]→[レイヤー設定]でレイヤー名を付けておくとUnityのFBXツリーの下位の名称(なんていうんだこれ?)になるようだ。

これをlwoで保存しておく、右上の小さいメニューから「レイアウトへオブジェクトを送る」して、レイアウトで開いたらレイアウトでは[スケルゴン変換]するだけ。そして[ファイル]→[出力]で「FBX出力」をする。出力したい項目だけ選んでAssets以下のFBXを置きたいとこに保存。Unityで読むとき自動でその下にMatarialsフォルダが作られその中にサーフェイス名.matが作られる。

Unityで読み込んだFBXを選んで「Rig」タブからAnimationTypeを「Humanoid」にしてAvatarDefinitionを「Create From This Model」で[Configure]。そーすると自動でボーンたちをそれぞれ割り当ててくれる、ここだけステキ。いちおPose変えたりしてみてから[Apply]して[Done]。これでHumanoid型のアニメーションに使えるね。


○[File]→[Build Settings…]のScenes In Buildに削除したりしたSceneのゴミが残っててしかもグレーアウトしてて消したりできない

/ProjectSettings/EditorBuildSettings.asset
をテキストエディタで開いていらない.unityを指定している行を消したら行けた。


○UnityAdsでなんか出た

Debug: Requesting new config from http://admediator.unityads.unity3d.com/v1/games/131622476/config
UnityEngine.Advertisements.Advertisement:Initialize(String, Boolean)

なにこれ?
http://admediator.unityads.unity3d.com/v1/games/131622476/configにアクセスしたら
Cannot GET /v1/games/131622476/config
って表示されたけどー。。


○Collider追加してもRigidBody追加してもOnCollisionEnterが発生しないんだけど?

どーなってんだーとあれこれ作り直したり作り直したりしても発生しないOnCollisionさんたち。どうしてしまったんやUnity…。
数時間後、前に
「○コリジョンのマスク」というところでコリジョン発生しないように設定していたのを思いだすorz…
[Edit]→[Project Settings]→[Physics]で出てくる勝ち負け表みたいなやつのHashiの列と追加したMedalのチェックを入れたらできたorz…


○RigidbodyでUse Gravityしてないオブジェクトが何かにぶつかったらゼログラビティの世界で空中浮遊でゆっくりと永遠にグルグル回り続ける

コリジョンマスクをして当たらないようにして回避していたがそれを復活させたらまた発生した。C#の中でrigidbody.MovePositionしているから勝手に動かれるととても困る箸。

あれこれ設定をいぢったら
Constaintsの
Freeze Position X Y Z
Freeze Rotation X Y Z
のすべてにチェックを入れたら直った。これをチェックするとMovePositionとかも動かなくなると思っていたんだよぉー・・・やれやれ。


○アイコン作った

LightWaveのモデラーでガチャガチャやってから、レイアウトでガチャガチャしてめちゃくちゃでかいサイズでプリレンダリングしたやつをフォトショで正方形にトリミングして

icon_192

できた。なんかイメージ通りにできたのでこれで決まり〜なんだけど、
せっかく12種類もサイズ違いを用意したのにiOS/Androidの[Player Settings…]のIcon見たらいつのまにか一番大きいやつを入れたら勝手に他のやつも作って入れてくれるみたい?な感じになってた。。せっかく作ったのにぃー。
そしてせっかく作ったのにAndroidはiPhoneみたいに周りをrectedしてくれないことを昨日おきた先生に教えてもらった。

そして肉会のiOS開発者たちに遊んでもらって懸案点がいくつか。
・残り5秒くらいになったらGOスライダー点滅させたらいいじゃん?
・スタート時のメガデモをスキップできない(と言われると思ってた。。。)けどスクリプトとかアニメーションとかオブジェクトさんたちが連携取り合ってるやつゲームメインまでスキップすんの大変じゃない?任意の時間にタイムラインジャンプできたりするといいのにねぇ。。
・スワイプ操作といっても人によって異なる。その場でちょんと弾くような操作をしてほしいのだけどメダルまでドラッグしちゃったりいろいろ。うーん。
・AndroidでStart()したときのCanvasの部品たちが消えない。なにこれどういうことよ、トホホ。
・返却口、冷水器、箸の束、安っぽいコップ、おすすめ品のポスターなどいれたいなあ。とアキバの富士そばの外から(肉食べるのにそば食ってくのも変だし、そば屋の中であちゃこちゃ写真撮るのも変だし)写真を撮ってたけど窓に風景が反射してうまく撮れずに人が通って自動ドアが開いた瞬間を狙ってパシャパシャ撮ってたらやっぱいアヤシイ変な人でしたorz…


○お、俺・・カメラを・・・Sceneで仮置きした位置にコードで動かしたいんだ・・・

Rotationがさっぱりわからない。どうしてみたままの値が入れなれない?
いろいろググってためしてもできると書いてあるのにだめ・・・カメラの位置動かすの必要、どうしてもやらないといけない・・・。
そして朝が来たとき衝撃の事実が!!!!

mainCam.transform.position = new Vector3(23.96f, 7.37f, -0.21f);
mainCam.transform.rotation = Quaternion.Euler(new Vector3(1.16f,112.51f,0.0f));
mainCam.GetComponent().fieldOfView = 100.0f;

なんということでしょう!?
上の「TIPS – アニメーションの補間を完全に切る」で導入したメインカメラのAnimationLatchがAnimationの最後で〝勝手に〟オンになって終わっていたのです!!!!これによりRotationをいっくら変えても変な値になってしまいます!!!とんでもない!最悪や!!ヽ(`Д´)ノ ウワワワワワワワワワワワワワワワワワワワワン!!

platform_unity_-_FPS_-_iPhone__iPod_Touch_and_iPad


○Unity4.6のuGUIのImageをマスク

なんかパワーゲージみたいのがあってゲージの部分をマスクして切り抜きたいときのやつ。ちょうどもう一個作ってるやつでもやってたので覚書き。

1
パワーゲージの背景とゲージのふたつを用意してGUIのMultipleでSlice。マスク画像も用意してたけどいまのとこいらないみたい。

2
背景のイメージを下のレイヤーに作成。

3-2
そしてマスクを次に作る。空のイメージにMaskを追加する感じ。マスクを伸張したい軸をPivotにする。この場合RectTransformのWidth値を変化させるとマスク画像が伸び縮みしてゲージが増えたりする。

4
マスクにパワーゲージのイメージをぶら下げる。あーしまったここの名前は「HealthBar」にしとくべきだったのにデフォのままにしてしまった、直しておこう。これのWidthはマスクの最大サイズ。パワーゲージがMAXのときの画像ってこと。300にしていて、マスクを100にしていたので結果・・・

5
だいたい1/3くらいにちゃんと切り抜かれてるねー。
そいでソースコードでマスクのRectTransformのWidthをいぢるときっといい感じになると思うんだ。これからやんだけどー。

2015/2/17追記
最新バージョンにしたせいかわかんないけどiPhone5Sでもマスクされない現象に陥ってどはまり中。。もう一個のプロジェクトはちゃんと実機でもマスクされてるのになぁ。なにかPlayerSettingsとかカメラか画像かマスクの設定かなんかに違いがあるのか。。ほんとやれやれ。

 

Updated to latest Unity 4.6.2f1 and problem still occur on Samsung Galaxy Ace 2 Android 2.3 (24-bit is checked). Content that should be hidden by mask are visible. Are there any alternatives to mask for scrolling?

http://forum.unity3d.com/threads/new-ugui-mask-doesnt-work-for-some-android-devices.269186/page-2

 


○なんかなに?Unity4.6.2f1にしたタイミングかどうかわかんないんだけど、iPhoneをUSBに挿した状態でiOSでBuild&RunしてXcodeプロジェクト作成→Xcode起動→クリーンビルド→Runまで自動でしてもらおうとしたらなんか赤い字で「Error building Player: NullReferenceException: Object reference not set to an instance of an object」って出て止まっちゃって気持ち悪いんですけど?

これなんか昨日いぢった「EditorBuildSettings.asset」が悪かったんだろうか、よくわかんないけどそれっぽいのを発見。

Automated build only works once, after that NullRef when building
http://forum.unity3d.com/threads/automated-build-only-works-once-after-that-nullref-when-building.296234/

によると、iOSのフォルダごと削除してしまってからUnity開き直してやってみな、と。
Xcodeの設定とかやっちゃいけないのね・・・なんかやった気がして消すのがすごいイヤーな感じなんだけど、仕方ないか・・・。
あ、直ったよ。

あれ、でも今度はまた赤い字で
「(!IsPowerOfTwo(width) || !IsPowerOfTwo(height)) && !IsNPOTTextureAllowed(mipCount > 1)」
って出てるよなんだこりゃやっぱ気持ち悪ーい。


○アセットをImportし直したら、自分の開発用フォルダにある同じ名前のFBXは間違いなく上書きされてあとなんかプレハブとかMaterialもオリジン返りしてたりして超アセッタよ。

AssetStoreで買ってきたSoldiers@RunとかいうFBXをそのまま自分のとこにコピーして、それをSceneに置いて手に持ってた銃を箸に変えたりテクスチャを別のにしたりShaderをUnit/TextureからDiffuseにしたりいろいろカスタマイズしてからPrefub化してどんどん進めてたわけですよ。

で、リファクタリングするつもりでStandardAssetとかImportしたときに勝手に作られて増えたアセットで使うやつは自分の開発用の美しく整頓されたフォルダにコピーして入れて、勝手に作られたやつは全部使ってないものにして削除をしといたわけですね。
それで、ちょっとシーンを追加したときにあのアセットの中のRightShotのアニメーションが欲しいいな、とほんとは.animだけあれば済むところをいちいちImportし直すわけです。まー勝手にフォルダ作られるだけだから、また.animだけCmd+dで抽出して、フォルダは消せばいいやと。
そしたらなんと主役のキャラクターがフリーズですよ。なんてこと。。。先祖返りしてしまいました。インポートして別の位置にあるにもかかわらず上書きされちゃいまして。。イチから設定やり直しですわ。いやー使いどころによっちゃーすごい便利なんでしょうが空いた口が塞がりません。また3,4時間かけてキャラクターの設定やらテクスチャやらアニメーションやら、手にぶらさがってるオブジェクトの差し替えやらやり直し・・・。アセットならぬアセッタですわ、いやね、ほんとに。

はー今日は疲れたら朝までやらずに寝まする・・・(2/15深夜)


【これはヒドイ】uGUIのMaskがiOSの実機でだけ表示されない。しかもuGUIが出る前のUnity4.5のときに作ったプロジェクトではちゃんと出るのに、Unity4.6.1とかの頃かなに作ったプロジェクトだけ表示されない。HierarchもInspectorもBuildSettingsもPlayerSettings完全に同じにしているのにもかかわらずorz……

というわけでほぼ丸二日かかった解決方法を伝授してしんぜよう。
まずuGUIが出る前のUnity4.5の頃かなんかに作ったプロジェクトでは・・・
s1
画面右側の縦長のバーでちゃんと上記「○Unity4.6のuGUIのImageをマスク」の方法で作ったマスクが問題なく作動している。白い四角が見えるのはMask(Script)の「Show Mask Graphic」のチェックを入れて分かりやすく見えるようにしているだけであとでチェック外せばオケ。
しかしまったく同じように同じ画像を同じHierarchで同じInspectorで同じBuildSettingsで同じPlayerSettingsで作ったのにもかかわらず・・・

s2

ギャーーーーーー!!!

もうマスク完全無視。完全無視だわ。。しかもUnity上ではちゃんと出る。USBでぶっ挿したiPhone5Sにいちいち転送して確認すると出ない。最悪もう最悪。もし両方のプロジェクトでダメならUnityのバグだろーとか言ってあきらめて、代替に検討していたトランスペア〜カットなシェ〜ダ〜とかでuGUIなど使わずに3D的にやっちゃえばよかった、てかこっちのほうが3Dとかまだ意味が分かってないシェーダーというやつの勉強になったかもしれない。

Unity game 2D sidescroller health bar C#
http://stackoverflow.com/questions/23191177/unity-game-2d-sidescroller-health-bar-c-sharp

なのにだ・・・まったく同じに作っているのにiPhone5Sの実機でのみ異なる動作をする。あ、ぐぐったらAndroidも同じような症状が出ているらしいけどめんどいので転送さえもしてないよ。AndroidはAndroidでGoogleに頭が来ることがGPGS的に昨日あったんだけどさ。まーそれは置いといて。

と、あきらめかけたとき、Legacyが頭をよぎる。Animationに1,2,3とかバージョン別のタイプがあってAnimatorControllerに乗るのは2,3で、オブジェクトそのものにAnimationのComponentとして入れらるのはLegacyな旧バージョンの1なのだ。だがしかし、普通にCreate→Animationすると自動的に2ができちゃうんだよ!ヒデー!。しかもその数字は普通にいぢってると普通には見えない隠蔽されたところにあるのだ。それがデバッグモード。
まさか・・・とは思いデバッグモードにして、マスクのInspectorのすべてを目視で差異がないか確認、マスクにぶらさがってる画像もInspectorのすべてを目視で差異がないか確認、それら入れてるCanvasもInspectorのすべてを目視で差異がないか確認、それを写しているGUIカメラもInspectorのすべてを目視で差異がないか確認、そして最後の最後に念のためBuildSettingsのPlayerSettingsのInspectorのすべてを目視で差異がないか確認してみようとしたのだ。
(あ、ちなみに本日より普通じゃ開けないUnityプロジェクトに業を煮やして両方開いて並べながら目視確認ができるようにこちらにてさせていただいたいつもお世話になっております。

「Mac版のUnityで複数のプロジェクトを同時に開く方法 – 強火で進め」

http://d.hatena.ne.jp/nakamura001/touch/20130331/1364734726

)

まずはBuildSettingsを表示して
Build_Settings
iOSにチェンジプラットホーーーーム!したやつでPlayerSettingsを選ぶ。



こっそり右端に表示されたInspectorなPlayerSettingsの右上にこっそり鎮座するシャーシャーシャー(三)ボタンをこっそり押してこっそりNormal ModeからDebug Modeにする。

platform_unity_-_FPS_-_iPhone__iPod_Touch_and_iPad

PlayerSettingsのデバッグモードはじめてみるんだけど、全部のプラットホームが一緒くたになっててナガーーーイのね。。。もう疲れたよ。パトラッシュ。

platform_unity_-_FPS_-_iPhone__iPod_Touch_and_iPad 2
そしていろいろ旧バージョンとの差異があって同じにしたのだけれど直接的な原因はこれでした。

〝「Use 24bit Depth Buffer」のチェックが外れている。〟
ハァ?って感じだ。マスクとなんか関係あんの?てかマスクのためにどうしてこんな裏技みたいな裏設定替えが必要?? もうわけわかんないーと頭を抱えつつ、またiPhone5Sに転送したら・・・

s3

デターーーーーーーーーー (´; ω;`) (´; ω;`) (´; ω;`) (´; ω;`) (´; ω;`) (´; ω;`) (´; ω;`) (´; ω;`) (´; ω;`)

ほんとチェックボックス一個ですよ。チェックボックス一個ですわ。
このために常人ならば50人ほどリストラや配置転換を余儀なくされるような過酷な2日間を掛けて導き出す答えがコレですか・・・。チェックボックス。な。

もうやだ寝る。(2/17 深夜3:30)

 


○MonoDevelopで「#pragma mark ホニャララ」したいんだけどググったら「#region〜#endregion」てのが出てきたんだけど、一番使いたいとこのUpdate()の中のswitch(gameStatus){….}の長〜いゲームメインループのcaseのところに#regionいれても[ビュー]→[デバッグ]ででてくる「ドキュメントアウトライン」には表示されなくて困りましたね

‘#Region’ および ‘#End Region’ ステートメントは、メソッド本体や複数行ラムダの内部では有効ではありません。
https://msdn.microsoft.com/ja-jp/library/w96cy299.aspx

ダメじゃん!orzrorzorzrorz…


○MonoDevelopで対応する括弧にジャンプさせたい

Xcodeだとダブルクリックに慣れてしまった訳だけど、秀丸原始人の僕はどうしても[Ctrl]+[k]が欲しいわけですよ、いや[Ctrl]+[{][}] でもいいわけですよ。
というわけで、[MonoDevelop-Unity]-[Preferences…]で
setting

「キーバインディング」の項目で「対応する括弧に移動」を[Ctrl]+[k]にしたいなーとか思ったけどなんかわかんなくて今の所[cmd]+[9]にしてみた。
けどなんかいつも画面のフチに移動するんだこりゃ。目線が迷子になってあんまつかってないorzorzrorz….


○UnityAdsの怪

ファイルを整理したりアップデートしてるときに/Assets/Plugins/Android/device.jar
を削除してしまった。
UnityAdsと関係ないように見えたし、どっかに移動してたのかも。
実機での動作がめちゃくちゃ怪しくなり、しょーがないから
AndroidのBuild SettingsでDevelopment BuildとScript Debuggingってのーにチェックして
Build And Runで実機に転送して起動したら、
/アプリケーション/eclipse/sdk/tools/ddms
とゆーなんかAndroidの環境についてくるやつ(これがまたいらん情報ばかりくれよって使いにくい)
を起動してコンソールみたく出してみたらどうやら

AndroidJavaException: java.lang.ClassNotFoundException:
com.unity3d.ads.picture.DeviceInfo

とゆーところそこのメソッドが終了してしまい、その後の処理が無視されるというヒドイ仕様。
空のプロジェクトを作って、UnityAdsのAssetをImportする画面にでてくるフォルダやファイルをことごとく現状のプロジェクトのFinderから消しまくる。そしてキレイの状態?にこれでなってるの、たとえばさーAssetがバージョンアップしたときに旧バージョンにあったファイルが不要になって消えてたらゴミなくならなくね?それともこのアセットに付随するファイルをクリーンナップしてくれる機能とかどっかにあんのかな・・・。
まーいいとして結果的にまったくUnityAdsに関係なさそうな
/Assets/Plugins/Android/device.jar
を復活したらたぶんそん中のcom.unity3d.ads.picture.DeviceInfoが見つかったんだろうというお話でした。


○uGUIのButtonの優先度の怪

Unity4.6のuGUIのButtonの上にこのボタン押せよ!っていうImageを透過PNGで載せたらどうやら押せなくなっていたよ、全然気づかなかったけど!
tmoikta先生に点滅させれば?というわれたんで、これ押せよ画像を作ってボタンの上にピッタリ重ねて高速点滅させたんです。なんか実機で遊んでみると「あれー効きが悪いのこんなもんだっけーくらいな感じ」だって点滅して消えてるときは押せちゃうんだもん。で、そのままサブミットしてから一息ついて「そーえば気になってたんだぁー」と思い出して試しにその画像を表示しっぱなしに変えて遊んでみたら「お、押せねえ!!!」。ButtonにButtonが重なってるならそりゃ私が悪いですよPrimaryOrder的な優先度的なお話、てかボタンの上に画像じゃ違うでしょ!!そうじゃない?違う違う?そうじゃない!?
というわけで、これは困ったものだ。ボタンの後ろにしたらなんか意味ないしってわけで、この変もなんか4.6.1のeからfにしたら逆順になったよとか世界中のグーグルで混乱が起きていたみたいでもーよくわかんない。

Graphic Raycaster used to have a priority?
http://forum.unity3d.com/threads/graphic-raycaster-used-to-have-a-priority.283851/

なんかこういう先駆者っていうんですか、iOS開発者にもとてもとてもすごい人がいるんですが、これなんかももうUnityのソースコードレベルの問題点を洗い出し中の人とやりあって人類未踏の宇宙へ漕ぎ出してユートピアを目指してくれるという技術発展の開拓者の人たち。ほんと頭下がります。で、僕はそういうのにはなりたくないというか、てかムリ!数多に問題解決済みのソースをグーグル先生にいち早く迅速に的確にそれこそピンポイントにURLドーンっしてもらって解決済みのそこのところをコピッとペッして進めていきたいのです。なのでもう2年くらいUnity勉強したい〜って言い続けていてやっとなんとかやりたいことが見つかるようになってきたんだけどまだまだ枯れてない。うん。バージョン差異での挙動に違いとか。かなーり情報錯綜状態。。。なので結局とっても辛かった。うん。でもうすぐUnity5がでるらしい。いきなりNot C#とか言い出してUniftとかゆー独自言語導入したりして恐ろしい事態が始まったり・・・はしないようでちょっとほっとした。でも引っかかって引っかかって引っかかりまくって時間のかかりまくったあれらの細かい挙動がまた別の挙動へ引き継がれて裏技を探して朝を迎える日々がまた続くのではないだろうか心配である。はやく枯れてほしい、技術は枯れてこそ、グーグル先生は有用な知識の宝庫となる。Stableサイコー! Stable! Stable!

あーめちゃ脱線したので話を戻して・・・

で、仕方なくもドローコールが倍になるという噂のuGUIを束ねるCanvasをもう一つ、OverlapCanvasとかAlertCanvasとかてきとーな名前をつけて、AlertCanvasのSort Orderを1にして元のCanvasが0だとAlertCanvasのほうが手前に表示されるみたい。そしてすかさず勝手についてきたコンポーネントのGraphic Raycaster (Script)っていうのを削除して、RectTransform、Canvas、Canvas Scaler (Script)っていう3つだけのシンプル構成なAlertCanvasちゃんにしちゃう。ここにImageの手前に表示させたいやつを移動してくる。そーするとなんかそのRaycasterとかいうやつが作用しないためこっちのAlertCanvasに入ってるものはただのものになるようだ。これでオケ。


○J:COMにもらったタブレットがいっくらadb devicesしてもでねー。。

やったこと。

・USBを差したときに上から下にスライドさせてUSBのやつを選ぶとMTPというのの設定ができる。MTPを出すときに「プログラムのインストール PCの接続に必要なソフトウェアをインストールします。・・・」とか出る。[OK]押すとデスクトップにCDのアイコンに「LGE Mobile」が出て、ドライバーらしきアイコンが出るけどなんかダブルクリックしてもエラーがでる。LG_PC_Programs.appってやつをダブルクリックするとドライバーインストールとなんかLGPCSuiteという怪しいソフトウェアのインストールと出る。しかもこっちのドライバー[インストール]を押してもうんともすんとも言わない。しかたなくLGPCSuiteを入れる。しかしこれもステータスバーが半分くらいでうんともすんとも言わないし、しかもインストール中にUSB接続が切れるというアクシデントが毎回!!こ、これがLGクオリティー!!!しかたなくキャンセルしていたのだが実はたとえUSBが切れようと我慢してそのまま待っていればインストーラが立ち上がることを確認。LGPCSuiteはファイル転送ソフトだった。adb devicesにはもちろん無関係でした。 → 結果 : 時間のムダorzorzorz….

・ドライバーのせいだと信じ込み上のCDの中にある変なファイル名でググって出て来た(MAC)LGUnitedMobile_Mac_Driver_Ver_4.17.zipとかゆーやつを試しに入れてみる。なんかAFTできるようになったり、できなかったり、そのそのLGPCSuiteがあるとAFTできないとか?でも結局AFTできようが、LGPCSuiteできようがadb devicesには何もでなかった・・・ → 結果 : 時間のムダ + なんか変なのたくさんマシンに入ってしまったorzorzorz…

・adb devicesに表示されないやつでググると

■[Androidプログラミング]ドライバが提供されていないAndroid端末にMacからUSB接続する方法
http://d.hatena.ne.jp/nakamura001/20130831/1377955756

Macにgalaxy S2をつなげたのに認識してくれなかった
http://kyabetsutaro.hatenablog.com/entry/2012/04/15/013217

という、なんか
add-onsにフォルダとmanifest.iniを作りシステムレポートに出ている0x1007とかいうやつを記入して?
android update adbすると~/.android/adb_usb.iniに0x1007とかいうのが表示されるから?
これがなんどやってもでない、もう25回くらいためした、でないなら自分で入れちゃえばいいって書いてあったから
$ echo “0x1004” >> ~/.android/adb_usb.ini
ってことに、こういうイレギュラーほんっと大っ嫌い。
そしたらadb kill-server、adb start-serverというのをすれば、adb devicesに・・・ → 結果 : やっぱ出ないorzorzorzo…rz…

・・・言い訳させてもらうとAndroidの開発しない宣言してからもう3年近く経ってるわけよ。その間に起こったことなどなにも知らないわけ。だから
「この作業は、端末がAndroid 4.2以降の場合のみ必要になります。」
みたいな罠をねぇ・・・仕掛けられてもねぇ・・・。

というわけで、下記をやったらアッサリ。もうAndroidは海に投げ捨てたいよ!!!

Android端末を「デバッグモード」(USBデバッグ)に設定する…2015/1/12更新
http://andmem.blogspot.jp/2012/10/androiddebugmode.html

というわけでいろいろ壁にぶつかって潰されながらも無事リリースできました。
よろしく!

i立ち食いそば
カテゴリ: ゲーム
現在の価格: 無料

== Unity5へ・・・続く ==

なんかどうもうまくいかないUnityメモ
トップへ戻る