Udon用エディタ拡張
UdonのPublic変数をエディタ拡張から変更するための関数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | private void SetUdonVariable<T>(VRC.Udon.UdonBehaviour udon, T param,string symbol)
{
// Udon変数の初期化
IUdonVariable CreateUdonVariable(string symbolName, object value, System.Type type)
{
System.Type udonVariableType = typeof(VRC.Udon.Common.UdonVariable<>).MakeGenericType(type);
return (IUdonVariable)Activator.CreateInstance(udonVariableType, symbolName, value);
}
var programAsset = (UdonSharp.UdonSharpProgramAsset)udon.programSource;
var publicVariables = udon.publicVariables;
// Udon変数を取得
if (!publicVariables.TryGetVariableValue(symbol, out object variableValue))
{
variableValue = programAsset.GetPublicVariableDefaultValue(symbol);
}
// 変数を設定
variableValue = param;
// Udon変数をセットする
if (!publicVariables.TrySetVariableValue(symbol, variableValue))
{
if (!publicVariables.TryAddVariable(CreateUdonVariable(symbol, variableValue, typeof(T))))
{
}
}
}
|