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

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

Unityでasync/awaitを使う際に参考になるかもしれないブックマーク

Unityでasync/awaitを使いたいと思って以下のサイトで勉強してみました。(順不同)

How to use Async-Await instead of coroutines in Unity3d 2017 | Steve Vermeulen
http://www.stevevermeulen.com/index.php/2017/09/using-async-await-in-unity3d-2017/

Unity async/awaitで非同期を書く
https://qiita.com/unity_ganbaru/items/b0d837ef1baea5b8bd21

【Unity】Unity 2017 でコルーチンの代わりに async / await を使用する – コガネブログ
http://baba-s.hatenablog.com/entry/2018/05/07/090000

Unityで使える非同期処理アセットとかクラスとか | KDL Tech Blog
https://kobedigitallabo.github.io/2016/09/18/unity-async-assets/

Asynchronous programming | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/async

Task Class (System.Threading.Tasks)
https://msdn.microsoft.com/en-us/library/system.threading.tasks.task(v=vs.110).aspx

async/await関係でいろいろ試していると

.... can only be called from the main thread

のようなエラーが発生することがあります。Unityで使う場合は、その辺りに気を付けてください。

What does this error mean? – Unity Forum
https://forum.unity.com/threads/what-does-this-error-mean.338592/

ブラウン管風のシェーダー

ブラウン管風のシェーダーを試してみました。

crt

ノイズ版

crt-noise

使いどころは少し難しそうですが、良い雰囲気のシェーダーと思います。

※ノイズ版はUniRXを使わない形に改変したものを使っています。

リンク

[Unity3D]ブラウン管風シェーダーを作った | notargs.com
http://wordpress.notargs.com/blog/blog/2016/01/09/unity3d%e3%83%96%e3%83%a9%e3%82%a6%e3%83%b3%e7%ae%a1%e9%a2%a8%e3%82%b7%e3%82%a7%e3%83%bc%e3%83%80%e3%83%bc%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%9f/

Unityで複数のメッシュを結合する方法

Unityで複数のメッシュを結合したい場合はMesh.CombineMeshesが使えるそうです。 例えば、targetの子オブジェクト全体を結合したい場合は次のような感じです。

GameObject target;
MeshFilter[] meshFilters = target.GetComponentsInChildren<eshFilter>();
CombineInstance[] combine = new CombineInstance[meshFilters.Length];

for (int i = 0; i < meshFilters.Length; ++i) {
  combine[i].mesh = meshFilters[i].sharedMesh;
  combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
}

GameObject result = new GameObject();
MeshFilter meshFilter = result.AddComponent<eshFilter>();
meshFilter.mesh = new Mesh();
meshFilter.mesh.CombineMeshes(combine);

ちなみに、1つのメッシュで多くの頂点があるとうまく表示できなくなることがあるみたいなので気を付けてください。

リンク

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