オブジェクトを使うとマテリアルが変わるサンプルの解説
Udonスクリプト作成
サンプルのChangesMaterialOnEventをU#に書き直し
ChangeMaterilメソッドを呼び出すと参照先の番号がカウントアップするので、オブジェクトのマテリアルが変わるスクリプトとなっています。
Udon Graph
Remindarパネルは任意の値より大きくなったら0に戻す処理かと。
U#
Graphと違ってUdonSharpBehaviourの継承クラスを型を宣言できます。そのため、eventNameというstring型が不要です。
public class ChangesMaterialOnEventBySharp : UdonSharpBehaviour
{
public Material[] materials;
public MeshRenderer meshRenderer;
public int materialIndex;
public void ChangeMaterial()
{
materialIndex++;
if (materialIndex >= materials.Length) materialIndex = 0;
meshRenderer.material = materials[materialIndex];
}
}
public class InteractCubeBySharp : UdonSharpBehaviour
{
// 型はUdonSharpBehaviourでなくて良い
public ChangesMaterialOnEventBySharp target;
public override void Interact()
{
target.ChangeMaterial(); // そのままメソッドを呼び出せるのでstring eventNameが不要
}
}
シーン作成
Cubeを配置して作成したスクリプトを配置するだけなので詳しい説明は割愛。
さいごに
U#はUdon Graphと違ってUdonSharpBehaviourの継承クラスを変数として扱えることができるので、メソッド名を変更した場合は、コンパイルエラーが出現するので修正箇所の特定が楽です。というかVisualStudioで修正したいメソッド名にカーソルを置いてctrl+R+Rキーでメソッド名を一括で修正することができるので,この点でU#のほうが作りやすいですね。
使うコマンドをオブジェクトに作成する