2020-10-01から1ヶ月間の記事一覧
UIElements を使ってみるためには UIBuilder が必要だったため 使ってみて分かったところと、下記ドキュメントを Google 翻訳して分かったところを記述する UI Builder | UI Builder | 0.11.2-preview 解釈等間違っている可能性があるので、内容は正しくない…
Unity2020.1から Runtime UIElements が利用できるようになったので導入と表示までをまとめる 利用できると言ってもまで Preview 版なので、デバッグUIに利用する分には問題無いが uGUI の代わりとしてはまだ使えなさそうでした 利用した Version UnityVersi…
デフォルトの ProjectWindow は 2列表示になっている これを右上のメニューから 「One Columns Layout」を選択すると 1列表示に変更できる、個人的にはこちらの方がすきなのでこちらをよく利用している
Editor ツールで Texture を新規作成し保存する際には AssetDatabase.CreateAsset を利用する しかし 既存の asset を置換する際に利用できるいい感じのものが(多分)無い やろうと思えば FileUtil.ReplaceFile で仮にファイルを作って置換できるけど、仮に…
スクリプトで Material の値を書き換えた場合再生が終了したタイミングで Material の値が書き換わる 例えばこちらの記事のスクリプトのようにC# で Shader のパラメータを操作していた場合を確認する 再生前の Offset がこちら 再生後の Offset がこちら 見…
Fog とは、カメラからの距離に応じてオブジェクトに色を重ねるエフェクトです 例えば青のFogを適応した場合右画像のようになります これは Shader 側で行われている処理で Shader が Fog に対応していなければ適応されません Shader Vertex Shader pragma に…
Bitmap のリファレンスを見ていると decodeByteArray という byte[] を Bitmap に変換する処理があった これを利用して Texture2D を bitmap に変換する 実際に変換できたかは、Bitmap を利用する処理を記述する必要があるが、今回は記載しない /// <summary> /// Tex</summary>…
C# で Android の機能を作成している際に ApiLevel によって機能を分けたいことがある その際に利用できるメソッド ※ ApiLevel については こちら /// <summary> /// Android の API Level を取得する /// </summary> public static int GetApiLevel() { var level = 0; try { u…
Unity では C# から Java を呼び出すプラグインが含まれており Unity から Android 固有の機能等の呼び出しを aar や java などを作成せずに利用することができる 単純な機能なら C# 側に処理を記述したほうが手軽なので便利です ※iOS の場合は C# から直接…
Unity Hub 2.4.1 を利用していたところ Unity2019.4系の「モジュールを加える」UI で Android SDKなどがインストールできることに気づきました Unity の Preferences / External Tools から Android の設定を見てみると Unity Hub から インストールできると…
OnDrawGizmos を記述しているにも関わらず Scene 上に描画されないことがありました using UnityEngine; public class MovePathAbstract : MonoBehaviour { private void OnDrawGizmos() { Gizmos.DrawSphere(Vector3.zero, 1f); } } 調べたところ Scene Vie…
以前作成したベジェ曲線では 例えば曲線を計算する t を10分割して各点の座標を表示すると下図のようになり等間隔で表示されない using UnityEngine; using System.Linq; public class SampleMonoBehaviour : MonoBehaviour { [SerializeField] private Tran…
以前ベジェ曲線を計算するクラスを作成しました ここで全体の距離がほしかったので処理を追加しました 以前の処理をクラスに追加すれば取得できます 計算自体もこれで正しいのかわかりませんが、曲線を分割して 分割した距離を合計しています LOOP_VALUE の…
ベジェ曲線 - Wikipedia wiki より計算式を拝借して、ベジェ曲線を計算するクラスを作成しました 使い方 Transform の座標を使ってやる場合はこんなふうに public class SampleMonoBehaviour : MonoBehaviour { [SerializeField] private Transform[] _trans…
Vector2, Vector3, Vector4, Vector2Int, Vector3Int にはインデクサーが定義されている ※ Color にもある インデクサーとは下記のようなもので public float this[int index] { get { switch (index) { case 0: return this.x; case 1: return this.y; defa…
ExecuteEvents.Execute を利用することで その GameObject が所持している コンポーネントに対して Event を実行することができます EventSystems.ExecuteEvents-Execute - Unity スクリプトリファレンス 対応している interface は以下です IBeginDragHandl…
Shadow など BaseMeshEffect を継承しているクラスの場合 UIVertex を利用する際に List が必要になる この List を利用 するたびに new していると Mesh の構築頻度によりますが メモリリークしてしまったり、CPUのスパイクが発生してしまう可能性が高くな…
Animation Clip は タイムライン上部で右クリックすることで イベントを追加することができる 追加したイベントをダブルクリックすると Inspector に下図が表示される これは GameObject に Animator を追加して State に設定してある Animation Clip から A…
MonoBehaviour を継承した UIBehaviour というクラスが存在する EventSystems.UIBehaviour - Unity スクリプトリファレンス CanvasScaler や Graphic など uGUI で利用するクラスの多くはこれを継承して作られている 実装されているメソッドは以下の通りで基…
TextureImporter では Inspector で表示されている Texture の設定が全部行えない そのため TextureImporterSettings を取得して、こちらを変更する 設定できる変数はこちらをご覧ください https://docs.unity3d.com/ja/2018.4/ScriptReference/TextureImpor…
※Unity2019.4.6f1 private void OnValidate() { var path = UnityEditor.AssetDatabase.GetAssetPath(asset); var importer = UnityEditor.AssetImporter.GetAtPath(path) as UnityEditor.TextureImporter; if (!importer.isReadable) { importer.isReadable…
Image の alphaHitTestMinimumThreshold を 0以上にすればタップした際に有効な Alpha の値を変更できる alphaHitTestMinimumThreshold を 1にすると半透明な部分のタップが無効化される しかしテクスチャが半透明かどうか判定するために Read/Write Enable …
ボタンの実行処理自体は onClick に対して Invoke をすれば呼び出しはできます Button.onClick.Invoke(); しかしこれはボタンが押せる状態じゃなくても実行することができてしまいます そのためボタンに Ray が通ればボタンを押せると判定して押す処理を書い…
※ Unity 2019.4.6f Unity Hub の Template に Lego® が追加されたようなので触ってみました blogs.unity3d.com テンプレートのインストール ※ Unity Hub v2.4.0以上 Unity Hub の新規作成から テンプレートに Lego® を選択する 年齢入力が必要なので入力する…
public static Vector2 GetCenterPosition(RectTransform rect) { var position = rect.transform.position; // 真ん中Pivotじゃなければ真ん中を計算する if (rect.pivot != new Vector2(0.5f, 0.5f)) { var scaleX = rect.transform.lossyScale.x; var sca…
https://hacchi-man.hatenablog.com/entry/2020/10/05/220000 の記事の続きです 動きの共通化 動きのパラメータは ScriptableObject として保存することができるので 同じ動きをデータを読み込むことでできます Animator のようにパスで対象を操作する訳じゃ…
【Unity】演出を Animator じゃなくて Inspector で設定するツール ~1~ - うにてぃブログ の記事の続きです スクリプトでの制御 各Sequence は ComponentTween クラス が管理するようになっているので 登録したIDを指定して ComponentTween.Stop("ID"); で停…
Animator が エンジニア的には使いづらく、UIの動きを DoTween 等を利用してコードで作成するのは調整が面倒 ※ 有料だったらあったような気もする そのため、Inspector 上でパラメータをセットするとそれに合わせて動くツールを作成しました 一応拡張性もあ…
例えば フラグ判定で、そのビットが立っているかどうかを判定する際に HasFlag を利用する [Flags] public enum Test { A = 1, B = 2, } private void Main() { var flag = Test.A; flag.HasFlag(Test.A); } しかし 複数のフラグを判定する場合は HasFlag を…
ProjectWindow で右クリックで出てくる CopyPath を選択するとそのアセットのパスを取得することができます あとはどこかでペーストすれば クリップボードに保存されているアセットのパスがペーストされます 特に使わない気がしたのですが、フルパスを取得す…