スクリプト
最近ResetコールバックでFieldを登録するアプローチにハマっています。通常は実行時にFindやGetComponentでコンポーネントの取得を行うのですが、これを事前に取得します。事前に登録するのでFind等のアプローチが使えますし、GUI操作のような煩わしさも少な…
Unityのボタン等のイベントをシーン内に登録/保持するには、UnityEditor.EventsのUnityEventToolsを使用します。 エディタ上でメソッドを登録するメリットは3つです。 実行時にイベントの登録処理を必要としない EventListenerの引数とマッチしないメソッド…
先日#UnityTipsにて、中々に面白いTipsが紹介されました。 #UnityTips object.ReferenceEquals(someObject, null) is faster than someObject == null. — Mike Geig (@mikegeig) 2015, 5月 26 #UnityTipsとは 火曜日の大体夕方から夜にかけて、#UnityTipsの…
実はパス指定でFindがかけられたそうです。マニュアルにも書いてありましたが、Find自体めったに使わないので知りませんでした。 例えば上の画像では、以下の様なコードを記述するとルート直下のSampleGame/Manager下のPlayerオブジェクトを取得します。 var…
先日のサウンドゲームジャムで中々に期待出来そうなゲームを作りました。 Unity Web Player | sgj2015gw このゲームでは基本的に音に合わせてゲームを進行させるのですが、昼から夜・もしくは夜から昼に変わる際にリズムに合わせて演出を行う的な物を作りま…
Unity 4.6よりSendMessageに変わる新しいメッセージングが登場してしまいました。その名もExecuteEvents.Executeです。詳しくは下のマニュアルに書いてあります。 Unity - マニュアル: メッセージシステム この機能は、特定のインターフェースを持つコンポー…
目次 目次 n秒後に何かする コルーチンの停止 コルーチンの一時停止 コルーチンの完了を待ち合わせる コルーチンの結果を受け取る 進行状況が表現可能な 待機 その他Tips 参考 n秒後に何かする コルーチンは、時間を絡めた処理を実装するのに便利です。例…
追記版 tsubakit1.hateblo.jp Unityはゲームマネージャーを初めとした○○マネージャーを起動時にセットアップする事が出来ない為、多くの場合「○○マネージャーを作るマネージャー」をシーンに配置して、起動時にインスタンス化してもらう、起動用シーンを用意…
目標位置へ等速で動かすコードです。目標時間で最終目的地に到着するような感じです。下のgifだと1秒で目標地点まで到着します。 // Unityで座標を等速直線的に動かすやつ。コメントアウト解除するとカーブエディタで他の移動パターンも作れる 解説 まず、…
Unityの属性について紹介します。 目次 目次 属性(Attribute)とは 属性の表記ルール Unity標準の属性 Inspectorを拡張する属性 SerializeField TooltipAttribute SpaceAttribute HeaderAttribute MultilineAttribute TextAreaAttribute HideInInspector NonS…
Unity4.6で追加したuGUIでスクロールバーを作る方法について紹介します。 大体こんな感じのスクロールバーを作ります。 作り方 まず、リストに表示するノードのプレハブを用意していきます。 適当な横長のImageを用意します。名前はNodeとします。 左の方に…
uGUIでノベルゲームのようなものを作る…の続きです。 今日はコマンド周りをやります。 uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ シナリオをテキストファイル…
Unityで適当にコードを書いてると、沢山ワーニングがでてとても精神衛生上悪いです。これを消す方法を紹介します。 このボタンを押すと消えます。ぽちっとな ちがう、そうじゃない。 まあ、ココでも消せますが、これでは全てのWarningが消えてしまいます。な…
以前紹介したメッシュの結合ですが、OBJを吐き出せるようにしてみました。 ここからパッケージをダウンロード出来ます。 Unityのシーン上に配置したモデルを結合する - テラシュールブログ Unityのシーン上に配置したモデルを結合する - テラシュールブログ …
Unityで取り敢えずゲームを作る過程で「Input.GetButton」系を使用している場合でも、タッチパネルに対応する方法を紹介します。 今回もSample Assetsシリーズです。 新 Standard Assets候補、Sample Assets (beta) - テラシュールブログ 新 Standard Assets…
特定のルートを巡廻する際、ルートを変更したくなるケースが有ります。例えば「人が詰まっていて通行できない」ようなケース、「障害物が置いてあり通過出来ない」ケース、「ステージが変化し最短ルートが変更された」ケース等々です。 メッシュに移動コスト…
ゲームを作成している内に、村人や敵兵を特定のルート巡廻させたり、障害物を特定ルートで動かしたり、レーシングゲームでカートを周回させたり等々、そういったギミックを作りたくなります。 この「Unityで特定のルートを巡回する」方法は、パっと思いつく…
Unity 5からBooがサポートされなくなるみたいです。 Documentation, Unity scripting languages and you – Unity Blog Documentation, Unity scripting languages and you – Unity Blog 理由はごく単純に使ってる人がほとんど居ないから。Unityデベロッパー…
Unityで「ゲーム」を作ろうと思った場合プログラミングは避けられません。 そのプログラミングの過程で「C#」もしくは「UnityScript」を選択する事となりますが、最近おもしろい選択肢を見かけました。 Behaviour Machine Free Behaviour Machineは、ビジュ…
Unity 2018系はこちら tsubakit1.hateblo.jp --- Unity 4.5.3よりResources.LoadAsyncが追加されました。これは今までResources.Load時に停止させていた時間を停止させず、非同期でロードする命令です。 しかし、実際にコレを扱ってみて失望するかもしれませ…
ソースコードを整形すると、ソースコードが読みやすくなります。少なくともコーディングに慣れていない内はソースコードを整形すべきと思います。*1 ソースコードを整形するのが面倒くさい場合は、ソースコードを自動的に整形するが使用できます。これならば…
Quaternionでベクトルを回す Quaternionの加算 Quaternionを求める サンプル その他 Quaternionは回転情報です。transform.rotationに格納されています。 このQuaternion(回転)ですが、Vector3(ベクトル)と合わせると、Vector3を回転させる事ができます…
Unityのシーンビューへ線へオブジェクトの影響範囲等を記載する場合、Debug.LineやGizmoで行います。 その派生で、シーンビューへ文字列を表示したい場合、若干面倒ですがOnDrawGizmosやOnDrawGizmosSelectedコールバック内でHandle.Labelを使用します。 Han…
目次 目次 3つの座標系 スクリーン座標 ワールド座標 ビューポート座標 各座標系を使用するケースと変換 WorldToViewportPoint ScreenToWorldPoint ViewportToWorldPoint 関連 3つの座標系 Unityの使用するカメラでは、3つの座標系があります。すなわち「ス…
物理演算的には正しくなくとも、表現的に物体がぶつかった時にふっとばすのはよくある事だ。また爆弾等でふっ飛ばしたい場合もある。そんな時は「周囲のコライダーを全部持ってきて、その中でrigidbodyがあるオブジェクトに対してAddForceを実行」みたいな事…
プレハブとしてオブジェクトを作成するには、以下のようにコードを記述します。#if UNITY_EDITOR var tile = UnityEditor.PrefabUtility.InstantiatePrefab(prefab.gameObject) as GameObject; #else var tile = Instantiate(prefab.gameObject) as GameObje…
弾を生成する場合、以下の手順を行うのが一般的だ。弾のprefabを生成Resources、もしくは参照から1を取得2をGameObject.Instantiateする実はGameObject.Instantiateは、別にプレハブでなくとも実行できる。 GameObject.Instantiateの本質は「GameObjectをク…
剛体の落下位置を物理学で予測する。 powerの分だけ左にふっとばす感じのソースコードを用意。rigidbody2dでもrigidbodyでも良い。rigidbody.AddForce(Vector3.left * power, ForceMode.Impulse); もしくは rigidbody2D.AddForce(Vector2.right * -power, Fo…
UnityのGameObjectコンテナを使う面白い使い方として、AddComponentがある。この機能は、GameObjectに特定のコンポーネントを追加し、その参照を得る物だ。これを使うと、オブジェクトに動的に機能を追加する事が出来る。しかし、このAddComponentを利用する…
フラグの管理についてアレコレ考えていたら、ゲームオブジェクトを次のシーンへ受け渡す面白いアイディアが浮かんだ。 Unityでゲームを作っている場合、LoadLevelによるシーン遷移をよく利用する。LoadLevelはメモリをスッキリして参照関連や変数を上手い感…