Unityで基本の関数の覚え書きです。C#用です。
Unity便利な技
エディタの表示を大きくする
Preferrence>UISalingを変更。
変更前100%が
125%でこのぐらいに。
110%ぐらいにしたいんですけどどうやれば...
プロジェクトの複製、注意点
プロジェクトフォルダを複製します。
リネーム
ハブの追加でフォルダを選べばOK。
プロジェクトの削除
削除するときはハブで一度削除。
あとはフォルダを削除。
プロジェクトを複製してもBuildする先のフォルダが前のままでした。
Buildして実行する場合には、フォルダを指定しなおしたほうがよさそうです。
Visual Studio CodeのCodeLens「x個の参照」を消す
Unityで外部エディタでVisual Studio Codeを使っていると「x個の参照」というのが出ます。
使わないときには、無駄に行が増えるだけなのでうざいです。
オフにするには、「ファイル>ユーザ設定>設定」へ移動。
この機能はCodeLensと呼ばれるそうなので「Lens」で検索。
すると項目が出てくるので「Editor:Code Lens」のチェックをオフ。
プログラムファイルへ戻ると無事「参照」が消えていました。
JetBrains Rider Editor削除していいい?
nityのパッケージマネージャーを見ると、「JetBrains Rider Editor」というのがあります。
これはプログラムのコードを書く時のエディターのようです。
うちでは「Visual StudioCode」を使っているので使いません。
不要なら消してもいいのでしょうか。
とりあえず削除してみました。
とりあえず有料IDEみたいなので、使わない場合は削除してもよさそうです。
【C#】今日から始める Unity + Rider 生活【随時更新】 - Qiita
Visual Studio CodeでThe.NET Core SDK cannot be locatedのメッセージを消す
UnityでVisual studio codeを使っていると以下のような警告が出ます。
.「NET Core SDK」がみつからないよ、というものですが、別に入れたいわけではありません。
The.NET Core SDK cannot be located : Error running dotnet --info:Error: Command failed: dotnet --info dotnet.
.NET core sdkをインストールすれば解消されます。
.NET Core 3.1 (Linux、macOS、Windows) をダウンロードする (microsoft.com)
ただ、「このリリースはサポートが終了したため、サポートされなくなりました。 .NET 8.0 などのサポートされているリリースに移行することをお勧めします。」とも表示されているのでいれなくていいかもしれません。
VSCodeの設定でCore sdkで検索すると「Suppress the warning that the .net core sdk is not on the path= CORE SDKがパスにない時の警告をやりすごす」というのがあります。
これをチェックすると警告はオフにできると思います。
アセット画面の表示文字数を増やす
アセット画面のリストビューでは似た項目が多いと文字数表示が少ないのでどれがどれかよくわかりません。
右下のスライダを横にめいっぱい移動すると表示される文字数は増えます。
が、アイコンがでかくて邪魔です。
今度は右下のスライダを左にめいっぱい移動。
すると文字メインのリストビューになります。これなら文字が確認できて選択しやすいです。
Unity便利関数
Unityになれるためのごくごく基本的な関数の紹介。
シーン・エディタ
シーンの切り替え
シーンはアセット上に作成できます。
ダブルクリックでそれぞれのシーンが開くので、編集できます。
シーンができたら、ファイル>ビルド設定をひらいて、あらかじめ「シーンを追加」しておきます。
スクリプトでは「using UnityEngine.SceneManagement;」を宣言してから使います。
あとはscene2へ移動する場合、以下のように書きます。
SceneManager.LoadScene ("scene2");
スクリプト自体は簡単ですが、ビルド設定のひと手間がちょっと面倒です。
エディタ停止
スクリプトからエディタを停止します。
UnityEditor.EditorApplication.isPaused = true;
インスペクタで変数を変更
[SerializeField] をスクリプトの変数宣言に使うとインスペクタ上で変更しやすくなります。
[SerializeField] をつけて宣言。
するとインスペクタ上で宣言した変数の値を変更できるようになります。
入力
いろんなトリガーを使う場合には「Event Trigger」
マウス入力の取得
「Input.GetMouseButtonDown」で取得。
void Update()
{
if (Input.GetMouseButtonDown(0))
Debug.Log("左ボタン");
}
キー入力
キー入力を取得。
WASDキーでの移動はよく使います。
if (Input.GetKey(KeyCode.Return))
Debug.Log("リターンキー");if (Input.GetKey(KeyCode.W))
Debug.Log("Wキー");
ファイル管理
ファイルのロード
「using System.IO;」を宣言してから使用します。
「Application.persistentDataPath」はアプリのパスを取得する関数。
「StreamReader」を使って読み込みます。
string path = Application.persistentDataPath + "data.txt";
using (var fs = new StreamReader(path, System.Text.Encoding.GetEncoding("UTF-8")))
{
string result = fs.ReadToEnd();
Debug.Log(result);
}
ファイルの保存
「using System.IO;」を宣言してから使用します。
「StreamReader」を使って書き込みます。
string path = "C:/_work/data.txt";
string sData="任意の文字列";
bool isAppend = false;//追記の場合true
using (var fs = new StreamWriter(path, isAppend, System.Text.Encoding.GetEncoding("UTF-8")))
{
fs.Write(sData);
}
時間差処理
「invoke」関数を使うと、一定時間後に処理を実行させることができます。
void Start () {
Invoke("doTest", 1.0f);
}
void doTest() {
Debug.Log("Now Testing.");
}
数学
ランダム
int rnd = Random.Range(1, 10);//これで1~9の整数値
切り捨て:Mathf.Floor
偶数丸め:Mathf.Round