Skip to content
You-Ri edited this page Apr 3, 2019 · 3 revisions

Welcome to the LiliumToonGraph wiki!

カスタムマスターノードの作り方

ShaderGraphパッケージをカスタムする

マスターノードを自作するには、ShaderGraphパッケージにあるInternalクラスにアクセスしなくてはなりません。

外部からアクセスできるようにするためには、パッケージ側のソースに InternalsVisibleTo を追加する必要があります。 具体的にはShaderGraph/Editor フォルダの AssemblyInfo.cs に自作アセンブリ名を記入することで、内部にアクセスできるようになります。

using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("Unity.ShaderGraph.Editor.Tests")]
[assembly: InternalsVisibleTo("Unity.RenderPipelines.Lightweight.Editor")]
[assembly: InternalsVisibleTo("Unity.RenderPipelines.HighDefinition.Editor")]
[assembly: InternalsVisibleTo("Lilium.Toon.Editor")]

これでアクセスできるようになるのですが、普通に書き換えただけだとUnityの再起動で元に戻ってしまいます。 Unityは再起動のタイミングでパッケージ内が改変されていないか検査しているみたいです。

これを防ぐには Library\PackageCache にあるパッケージを Pakacages フォルダ内にまるまるコピーすることです。するとオリジナルのパッケージとなり、Unityが勝手に書き換えることはなくなりますので、好きなように改造することができます。

ただ、パッケージを新しくするたびに、変更点を確認しながら書き換える必要がでてくるので、その点は面倒になりますね。

参考:【Unity】PackageManagerが提供するパッケージのダウンロード先と、パッケージを改造する方法 http://tsubakit1.hateblo.jp/entry/2018/08/16/221016