Unity

【Unity】Hybrid ECS + MeshInstanceRenderer

前回でHybrid ECSを使ってUpdate() 部分をマルチスレッド化してみた。やはり描画負荷が高いよね。 MeshInstanceRenderer を使いたくなる!! 調べても使い方が難しく意味が分からん!(じゃぁこの投稿は何だよw MeshInstanceRenderer 試しにGameObject アタ…

【Unity】Hybrid ECS

Entity Component Systemを使いたいが、Pure ECSの学習コストが高い! 大量なオブジェクトのUpdate()だけスレッドで処理したく、 Hybrid ECSを試しました。( Unity バージョン:2018.2.10f1 ) 準備 Scripting Runtime Version 設定 ECS を使うために、.NET4.x…

【Unity】テキストの「均等割り付け」と「両端揃え」

UI作成時、このような表現はたまにほしくなるよね。IMeshModifierを実装することで実現できます。 gist.github.com

【Unity】ボタン作成時のカスタム拡張

UnityEditor のメニューに [GameObject/UI/Button] でボタンを作成したが、 プロジェクトによってはカスタムのコンポーネントを追加したり、 デフォ画像を設定したりしたいわけですが、毎回手動でやると面倒ですよね!!!!UnityEditor.UI.MenuOptions とい…

【Advent Calender 2016】Milkcocoa + UnityWebGL

この記事は Milkcocoa Advent Calender 2016 18日目の記事です。そろそろクリスマスなのに、 夏休みの課題のように、 最後の最後までコード1行も書いてませんでした! 当然な結果、進捗は全然ダメでした(/ω\)とりあえず、ミルクココアでも飲んで落ち着こう…

【C#】 Lazy<T> ( 遅延初期化 ) クラス

.NET4.0に追加された Lazy ( 遅延初期化 ) クラスをUnityで使いたいので書いた。 gist.github.com 追記 2016/12/02 string 型だと、パラメータ受け取らないコンストラクタがないため、 where T : new() を削除し、 上記修正とともに () => new T(); も () =>…

第9章 古く汚れた壁

進捗2種類のテクスチャ(漆喰とレンガ)を用意して、 頂点カラー(Rチャンネル)によってブレンドする技法ですブレンドした結果 頂点カラー UE4にはVertex Paintツールがあって 結果を確認しながら頂点カラーを編集することができます。Unityではこのような機…

第7章 岩

進捗 ノーマルマップを2枚使ってブレンドする オブジェクトノーマルマップ:メッシュの形状に沿ったノーマルマップ ディテールノーマルマップ :表面の細かい凸凹を表示するためのノーマルマップ ノード:BlendAngleCorrectedNormals SSE では このノードが…

第6章 レンガ

進捗

【Unity】JsonUtility で List<T> と Dictionary<TKey,TValue> シリアライズする

Unity5.3 から JsonUtility 追加された。 が、List と Dictionary はシリアライズできません!シリアライズ対象になるには以下の条件がある 1.クラスに [Serializable] 属性 2.privateメンバー変数に[SerializeField] の属性 3.publicメンバー変数にするもち…

【C#】C#でboost::bindを実装してみた(3)

前回の続きです 引数の部分束縛を実装に以下問題がありました ①どの引数を束縛するのかはどうやって指定するの? ②たとえ引数を適当を渡しても、両方も当てはまるのでエラーが発生します これらを対策してみました ①束縛する引数を指定する Placeholder 引数…

【C#】C#でboost::bindを実装してみた(2)

前回にはすべての引数を束縛することができました 部分的に束縛をやりたいと思います イメージ // メソッドを定義する public static void DelegateMethod(int a,int b) { // do do something } // デリゲートを保存する(第2引数を束縛する) Action action …

【C#】C#でboost::bindを実装してみた(1)

boost::bindはなかなか便利で、 C#のデリゲートで実装してみました デリゲート C#では delegate という メソッドをカプセル化する機能がありました 実際自分から定義する必要なく、 Action と Func を使用することが多いです Action と Func の簡単な例 // i…

【C#】BitArray覚えた

BitArrayとはビット値の小型の配列を管理するクラス 基本の使い方 例えば4ビットを管理するクラスを生成する // BitArray生成 BitArray bits = new BitArray(4); // [false,false,false,false]で初期化 // ビット2をtrueに設定 bits.Set(2,true); // ビット…

【C#】列挙型の項目数取得

例えば、こんな感じな列挙型を定義する enum Direct { Up, Down, Left, Right } 項目数取得 // enum => string[] => 文字列数取得 Enum.GetNames(typeof(Direct)).Length; テンプレートで実装する public static class EnumExtension { public static int Le…

【C#】ジェネリック引数付きコンストラクタ

C#では テンプレート型のコンストラクタに引数が渡せません using System; public class Foo<T> where T : new() { public Foo() { new T(1); } } `T': cannot provide arguments when creating an instance of a variable type 詳細:Compiler Error CS0417 Ty</t>…

【Unity】構造体属性

C#では union がなかったが、似ている機能があります StructLayout属性 構造体のレイアウトを指定可能にします FieldOffset属性 変数を指定位置に配置します [FieldOffset(バイト)] 例 ARGBを保持するクラスを作成します using System.Runtime.InteropServic…

【Unity】ユニットテスト:UUnit

UUnitはUnityIDE内実行できるユニットテストフレームワークです 何種類のユニットテストフレームワークを試してみて、 UUnitは一番使い勝手いいと思ったので導入方法を紹介します ダウンロード先 http://wiki.unity3d.com/index.php?title=UUnit 最新バージ…

【Unity】文字列プルダウンメニュー

Inspectorに文字列プルダウンメニューを表示する PulldownAttribute // PulldownAttribute.cs using UnityEngine; public class PulldownAttribute : PropertyAttribute { public string[] names; public PulldownAttribute(params string[] names) { this.n…

【Unity】 HideInInspector

スクリプトのpublic変数をInspectorに表示したくない場合 HideInInspectorを使用すればいい public class Foo: MonoBehaviour { { [HideInInspector] public int bar; }

【Unity】 自作Attributeでコメント表示

練習としてパラメータにマウスオーバーしたら コメント表示用Attributeを作成してみます CommentAttribute PropertyAttributeを継承して、コメント保存用クラスを作成します // CommentAttribute.cs using UnityEngine; public class CommentAttribute : Pro…

【Unity】DontDestroyOnLoad

Unity には シーンを変更時、古いシーンに生成されたオブジェクトを破棄されます シーンを跨いでオブジェクトを使用したい場合 スクリプトのAwakeが呼ばれたら、DontDestroyOnLoadを使えばいいです public class Example : MonoBehaviour { void Awake() { D…

【Unity】RangeAttribute

Inspectorにはスクリプトから公開された変数を調整できる public class SpinScript : MonoBehaviour { public float spin; } 有効範囲を設定したい時、RangeAttributeを使えばいい public class SpinScript : MonoBehaviour { [Range(0,10)] public float sp…

【Unity】Delegates 勉強した

C# delegate の使い方をメモします デリゲート class Foo { delegate void MyDelegate(int num); // delegateの要求形式を記述 MyDelegate myDelegate; public Foo() { myDelegate = PrintNum; myDelegate(10); myDelegate = PrintDoubleNum; myDelegate(10)…

【Unity】GameAnalytics SDK for Unity

データ集計&解析ツール GameAnalytics SDK for UnityUnityのAssertStoreに無料公開中です

【Unity】拡張メソッド(Extension Methods)

Transform クラスをリセットするメソッドを追加したい場合*1 // こんな感じで呼び出したい transform.ResetTransformation(); 拡張クラスを書く // ExtensionMethods.cs using UnityEngine; using System.Collections; // 拡張メソッド. このクラスは static…

【Unity】 Sprite Animation (セルアニメ) セットアップメモ

Sprite Animation (セルアニメ) 一番簡単なセットアップ方法 1.[ツールバー] -> [GameObject] -> [Create Empty] 2.[Assets]内セルアニメに使用したい画像を複数を選択 3.[1]に生成した GameObject にドラック&ドロップ 4.ダイアログが表示され指示通りに保…

【Unity】Polygon Collider 2D メモ

Polygon Collider 2D の 操作 座標編集( Shiftキー ) 移動したい頂点をドラッグ&ドロップ 頂点追加( Shiftキー ) 追加したい場所にクリック 頂点削除( Ctrlキー ) 削除したい頂点をクリック

Unity 4.3 がリリースされました

Unity Technologies Blogより、 Unity4.3がリリースされることが報告されました Unity - What's new in Unity 4.3 気になる点をハイライトします 2D toolset:2Dゲーム支援の拡張 Sprite追加 2D物理エンジン追加 Animation blendshapes(morph targets) ani…

Unityを学ぼう【第7回】

前回を続きまして、 WebPlayerで公開する手順です*1 WebPlayer用ファイル作成手順 プラットフォーム選択 1.[ツールバー] -> [File] -> [Build Settings...] 2.[Web Player] -> [Switch Platform] 3.選択中プラットフォームにはUnityのアイコンが表示されます…