Unity」カテゴリーアーカイブ

ゲームエンジン「Unity」に関するカテゴリーです。

動的にNavMeshを生成できるUnityのアセット

UnityでNavMesh使っていますか?

とても便利なツールですが、予めBakeしておく必要があり、動的に生成するマップで使い難いという難点がありました。そこで悩んでいたところ、動的に生成したMeshでも利用可能なアセットが公開されているそうです。

GitHub – Unity-Technologies/NavMeshComponents: High Level API Components for Runtime NavMesh Building
https://github.com/Unity-Technologies/NavMeshComponents

ドキュメントはこちら。

NavMeshComponents/Documentation at master · Unity-Technologies/NavMeshComponents · GitHub
https://github.com/Unity-Technologies/NavMeshComponents/tree/master/Documentation

スマートフォンで動作させる場合は負荷が気になるところですが、とりあえず自分の環境では動いているようでした。

リンク

Unity – Scripting API: NavMesh
https://docs.unity3d.com/ScriptReference/AI.NavMesh.html

Conditional属性で高速化

Unity Editorでの開発中やDebug中は実行したいけれど、リリース版では実行したくないという処理はConditional属性を使うと良いそうです。

使い方は次のような感じ。

using System.Diagnostics;
[Conditional("UNITY_EDITOR")]
public void example()
{
  // 実行したい内容
}

#if..#endifと合わせて使ってみようかなと思います。

リンク

Conditional (C# プログラミング ガイド) | Microsoft Docs
https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2008/4xssyw96(v=vs.90)

【Unity】 UnityEditorの時のみDebug.Logを出す方法
https://qiita.com/toRisouP/items/d856d65dcc44916c487d

ログファイル – Unity マニュアル
https://docs.unity3d.com/ja/current/Manual/LogFiles.html

Time.timeScaleに依らないWaitForSeconds

UnityでTime.timeScaleに依らないWaitForSecondsを使いたい場合は、WaitForSecondsRealtimeというのが使えるそうです。

使い方はWaitForSecondsと同じ。

IEnumerator Example()
{
  Debug.Log("start");
  yield return new WaitForSecondsRealtime(5.0f);
  Debug.Log("end");
}

Time.realtimeSinceStartup使って自分で実装する手間は必要ないみたいです。

リンク

Unity – Scripting API: WaitForSecondsRealtime
https://docs.unity3d.com/ScriptReference/WaitForSecondsRealtime.html