Programming Serendipity

気まぐれに大まかに生きるブログ

C#

Unity5 メモ16

BGMを、イントロは1回のみ再生して特定の部分だけループ(ABループ)させる イントロ部とループ部に分け、ループ部を遅延再生させる unity-musicloop-example イプシロン Vector3.kEpsilon(=1e-5f)があった。 Unityの日本向け公式キャラクター "Unity-chan!"…

Unity5 メモ15

デバッグ専用処理の分岐 大体以下の3種類 if(Application.isEditor) // Unityでゲームを起動した時true if(Debug.isDebugBuild) // build settingでdevelopment buildのときと、Unity側で起動したときtrue #if UNITY_EDITOR // Unity側で起動するときこの部…

Unity5 メモ14

プロパティ(C#) 例えば、値を代入するとき0以下なら0に、255以上なら255にしたい場合、 int a; // フィールド void setA(int value){ // 関数の中で直接チェック if(value < 0){ a = 0; } else if(value > 255){ a = 255; } else{ a = value; } } とするが…

Unity5 メモ13

Mathf.Epsilonはイプシロンとしては使えない 0.0001fなどで代用することにした。 ref. Unity の C# で限りなく小さい float 値を使いたい時には float.Epsilon を使ってはダメ 引数つきでシーンを呼び出す 同じGameシーンでもステージが異なるという場合、Ga…

Unity5 メモ12

Unityで使える、商用利用可能で無料の、漢字を含んだ日本語フォント Noto Sans CJK M+ FONTS OUTLINE パズドラ・モンストはLETSのフォント(有料)を使っているとの情報あり ゲーム業界向けLETS Canvas ScalerのMatch Mode 縦にだけスクロールする画面の場合…

Unity5 メモ11

子オブジェクトまで全て再帰的に有効・無効にする Textコンポーネントなどに用意されているenebledフィールドは、これだけをtrue/falseにすると、 このコンポーネントがアタッチされているオブジェクトだけが有効・無効になり、その子オブジェクトなどはその…

Unity5 メモ10

Unityでシェーダーのデバッグ Debugging DirectX 11 shaders with Visual Studio ↑の手順に従った後、フレームをキャプチャしてそのフレームを開くとどのようにシェーダーで処理されたのか分析できる。 Unityのシェーダーの基本 基礎知識がまとめられた記事 …

Unity5 メモ9

スクリプトを新規追加したときの初期状態を変更 Unityをインストールしたフォルダ内の C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates の中を変更する プレハブをネストさせる 現バージョン(Unity5.1.1)ではプレハブの中にプレハブを入れる…

Unity5 メモ8

オブジェクトの親のオブジェクトについたスクリプトの関数を呼ぶ this.gameObject.GetComponentInParent<EnemyController>().EnemyDead(); オブジェクトのサイズを取得 renderer.bounds.size or collider.bounds.size or mesh.bounds.size 敵をインスタンス化したときにプレイ</enemycontroller>…

Unity5 メモ7

特定のスクリプトがアタッチされたGameObjectの配列 例えばEnemy.csがアタッチされた敵用のゲームオブジェクトの配列を作りたいときは、 GameObject[]とすると入れることはできるが、GameObject内在の関数しか呼べない。 Enemy[]とすれば、自動的に「Enemy.c…

Unity5 メモ6

GameobjectにアタッチしないスクリプトのpublicメンバーにCameraなどのコンポーネントを適用する方法 Projectビューからスクリプトを選択し、出てきたインスペクターに対してコンポーネントを入れることで適用できる。 uGUIで「画面の右から3/4の位置に固定…

Unity5 メモ5

動くキャラクターの頭上に体力ゲージを表示する 例えばSliderを使って体力ゲージを表現する場合、using宣言とメンバを追加し、以下のようにするとオブジェクトに追従するUIが実現できる using UnityEngine.UI; // ... [SerializeField] Slider lifebar; // .…

Unity5 メモ4

モンストで敵に当たったときのキャラの跳ね返り処理 図で言うと、Aから進んでOの地点で接触した場合、Cの方向に進むのが正しい。 現状進もうとしているベクトルOA'を回転させてベクトルOCにすればいいのだが、直接∠A'OCを求めることは難しいため、まずは∠A'O…

Unity5 メモ3

スプライト 用意した画像をUnityで使うには、まずその画像を入れて、 その画像を選択した時に出るImport SettingsでTextureTypeをSprite(2D and UI)にする。 通常やるような1枚の画像に複数のパーツを入れている場合は、SpriteModeをMultipleにして、SpriteE…

Unity5 メモ2

コンポーネントのアタッチし忘れ防止 [RequireComponent(typeof(Rigidbody2D))] をクラス宣言の上に書くと、このスクリプトを取り付けたgameobjectに自動的にRigidbody2Dを付けられ、付け忘れ防止になる typeofの中にスクリプト名を書いて、特定のスクリプト…

Unity5 メモ

雑記。 Skybox Skyboxを設定するには、シーンのメインカメラにSkyboxコンポーネントを追加してスカイボックス用のマテリアルを適用(アセットストアにある設定済みマテリアルを利用すると楽) Skyboxを自作する場合はprojectビュー内で右クリックからcreate>…