うにてぃブログ

主にUnityとC#に関する記事を書いていきます

2020-11-01から1ヶ月間の記事一覧

【Unity】Script 'Packages/*.cs' will not be compiled because it exists outside the Assets folder and does not to belong to any assembly definition file.

自作ライブラリを PackageManager で利用できるように対応したところ下記 Waring が出ていました Script 'Packages/*.cs' will not be compiled because it exists outside the Assets folder and does not to belong to any assembly definition file. Warn…

【C#】string.Format内部で { や } を利用する

const string format = "\"{0}\": {\n"; string.Format(format, sample); としたときに Format の指定が間違っているエラーが出て変換できなかった FormatException: Input string was not in a correct format. \", \', \n, \\ などエスケープできるのは知…

【Unity】正規表現に対応した TextField

TextField で入力制限をしたかったので作成、入力のたびに判定したかったがうまく行かなかったのでDelayedTextField を利用している using System.Text; using System.Text.RegularExpressions; using UnityEditor; using UnityEngine; public static class …

【Git】global な ignore ファイルを追加する

個別に git の ignore ファイルを追加したい場合 git config --global core.excludesFile FileName を実行することで追加できる 例えば Homeにある .gitignore_global を追加してあげる場合は下記を実行します git config --global core.excludesFile ~/.git…

【Unity】PackageManager で利用する個人 github リポジトリにサンプルを追加する

package.json に下記を追加することで、リポジトリにサンプルを追加できる "samples": [ { "displayName": "Sample", "description": "Simple", "path": "Samples/Sample1" } ] サンプルの追加先は Assets/Samples/{displayName}/{versin}/{samples.displayN…

【Unity】Unity2020 以降の PackageManager で 個人 github リポジトリを利用する

PackageManager に git リポジトリを追加する場合、そのリポジトリに package.json が存在する必要があります もし、package.json が無い場合は下記エラーで追加することができません Cannot perform upm operation: Unable to add package [git@github.com:…

【Unity】Button を押した際に 縮小拡大のリアクションを追加した際の問題点

現象 ボタンを押した際に 縮小->拡大のリアクションをつけた場合 押した場所が縮小した際にボタンから出てしまうと、下動画のようにピクピクしてしまう 上記の動作をするスクリプトは以下になる public class ButtonTest : Button { // 縮小させる private v…

【Unity】package.json を作成するツール

github.com 自作ライブラリを PackageManager で利用できるようにするためには、package.json が必要になり 毎回以前のものを参考にして作成するのが面倒になったので、簡単に作成できるようなツールを作りました 連想配列のシリアライズが出来ないので、ロ…

【Unity】UIElements の要素を動的に変更するサンプル

ボタンを押すと VisualElement を追加削除する EditorWindow のサンプルです uxml を利用しておらずすべてスクリプトだけで記述しています using UnityEditor; using UnityEngine; using UnityEngine.UIElements; public class SampleWindow : EditorWindow …

【Unity】Prefab Mode のイベントまとめ

Prefab Mode で利用できる イベントをまとめました ※ Experimental なので今後利用できなくなる可能性があります Prefab を Scene 上で編集したあとに Override してもこちらのイベントは呼ばれません using UnityEngine; using UnityEditor; using UnityEdi…

【Unity】UIElements で Mask する

UI Elements は 親の形で Mask することができる しかしながら、画像で Mask することができずRadius のみが有効なので 四角形もしくは角丸でしか Mask できません もしかしたら今後は可能になるかもしれませんが、1.0.0-preview.9 ではできませんでした や…

【Unity】Prefab Mode で開くシーンを指定する

Edit / Project Settings / Editor に Prefab Editing Environments があり ここにシーンを指定することで Prefab Mode で Prefab を開いた際のシーンを指定できる Regular Environment 通常の Prefab を開いた際のシーン 例えばこのようなシーンを設定する…

【Unity】LayoutGroup が重いと言われている理由

LayoutGroup は便利ですが、公式にも重いため最適化するためには利用は避けようと記述されています Some of the best optimization tips for Unity UI - Unity 理由としては上記リンクに書いている通りですがどういった処理をしているのか見ていきます OnRec…

【Unity】UIElements 用の 拡張クラス

UIElements の Style 周りのパラメータを書き換える場合、Structなので直接値を変更できない そのため フォントサイズの変更であれば以下のように記述する必要がある var ve = new VisualElement(); var c = ve.style.fontSize; var c2 = c.value; c2.value …

【DoTween】Tween.Restart がうごかない

DoTween で Tween を再利用するために下記のようなコードを書いたところ 1度しか再生できないという現象が発生した using UnityEngine; using DG.Tweening; using UnityEngine.UI; public class SampleMonoBehaviour : MonoBehaviour { [SerializeField] pri…

【Rider】cannot find declaration to go to が表示され参照を探せない

新しいPC に Rider を入れたところ「cannot find declaration to go to」と表示され参照が追えなかった 設定を見たところ、 Preference / Build, Execution, Deployment / Toolset and Build / Mono executable path が空になっていた ※画像は設定後のもの …

【Unity】スクリプトを右クリックすると #if UNITY_EDITOR を追加する拡張

どこで使えるかわかりませんが、スクリプトを右クリックで #if UNITY_EDITOR を追加する拡張を作成しました public static class AddIf { [MenuItem("Assets/Add if UNITY_Editor")] private static void AddEditorDefine() { var guids = Selection.assetGU…

【Unity】VisualElement のサイズが取得できない

VisualElement の 生成タイミングでサイズを取得してみると NaN になり正しいサイズが取得できない 例えば下記のコードを試してみる public void OnEnable() { var root = rootVisualElement; var e = new VisualElement(); root.Add(e); var label = new La…

【Unity】Unity2020 から AssetStore Window が非推奨になっていた

Unity2020.1 で Asset Store を開いたところ 2020.1 から PackageManager で 購入したアセット一覧を見れるから Asset を探すのは ブラウザでしてくださいとの表示がされていた 個人的には Unity の AssetStore は見づらかったのでこの対応は嬉しい PackageM…

【Unity】Unity2020 から PackageManager の Preview 表示設定箇所が変更されていた

Unity2020 未満の PackageManager では Preview 版をインストールするには PackageManager に Preview 版を表示するオプションがあった しかし Unity2020 からは 以前設定できた箇所には Preview 版を表示するオプションが無い Preview 版を表示するオプショ…

【Unity】Hierarchy のパスを取得するツール

使い方 Hierarchy の オブジェクトを右クリックすると 「CopyPath」が出てくるので それを選択するとルートからのパスを取得できる 例えば下図のオブジェクトのパスをコピーすると Main Camera/Root/Path/Item になる コード using System.Text; using Unity…

【Unity】Preference や Project Settings に メニューを追加する

PreferenceItem を使おうと思ったら obsolete になっていたため 推奨されている SettingsProvider についてまとめる /// <summary> /// <para>(Obsolete: use the SettingsProvider class instead) The PreferenceItem attribute allows you to add preferences sections to</para></summary>…

【Unity】テクスチャのサイズを変更するツール

使い方 テクスチャをセットすると現在のサイズがセットされるので 変更したいサイズに変えて「Resize」を押すだけ Bilinear で変換しているだけなので、正しい変換かと言われると微妙な処理だが、パット見は問題なさそう コード using UnityEditor; using Un…

【Unity】テクスチャのある色を透過するツール

テクスチャの透過変換を他のサイト等で行うのが面倒だったので もしや Unity でできるのではと思い作成してみました 変換サンプル 例えばいらすとやさんの画像を肌色っぽいところを閾値0.1で透過に変換すると このように変換できます コード using UnityEdit…

【Unity】テクスチャの色を反転するツール

仮画像を作成したいときなど、仮画像と分かるようになにかしら対応をしたい そんなときに利用できるツールを作成しました 使い方 変換したいテクスチャを Project Window で右クリックして Texture/Nage を選択すると変換できます 変更例 コード using Unity…

【Unity】VisualElement の Position などを Tween させる

UI Toolkit では experimental ですが、 Position や Rotation などを Tween させる機能があり ※ Version 1.0.0-preview.9 現状は Layout TopLeft Size Scale Position Rotation を Tween させることができます 動かし方 Position の場合 VisualElement.expe…

【Unity】CustomEditor を UIElements を使って作成する

この記事では、uxml を使わずにスクリプトを使って CustomEditor を作成する方法を記述します CustomEditor で UIElements を利用するには CreateInspectorGUI を override する必要があります using UnityEditor; using UnityEditor.UIElements; using Unit…

【Unity】UI Builder で VisualElement を Horizontal に配置する

UI Builder を利用して Horizontal に配置するには Direction を row にすることでできます row に変更後 設定した VisualElement の子になにか要素を置いてみると Horizontal になっていることが確認できます しかし、左上によってしまっているので位置を変…

【Unity】自作 VisualElement に独自の変数を追加する

UIBuilder では VisualElement に独自の変数があった場合は Inspector に表示される Label の場合は Text の領域が表示され、変更することで表示される文字も変更される Name から Focusable までは VisualElement で定義されている変数なので、どの要素に対…

【Unity】Visual Element を自作する

VisualElement を継承することで VisualElement を自作することができる 他にも BaseField<> BindableElement TextElement 等既存の要素を利用して作成することができる using UnityEngine.UIElements; public class SampleElement : VisualElement { } しか…