Files
UniVRM/Packages/VRM/Runtime/IO/MaterialIO/MToon/ShaderProps.cs
Isamu Mogi 40a3a6dbe1 Unity 6.2 以降で ShaderUtil の一部のメンバーが Obsolete 警告を出すのに対応
Unity 6.2 以降で、UniVRMが利用している ShaderUtil の次のメンバーが Obsolete となり警告が出るようになりました。

- [GetPropertyCount](https://docs.unity3d.com/6000.2/Documentation/ScriptReference/ShaderUtil.GetPropertyCount.html)
- [GetPropertyType](https://docs.unity3d.com/6000.2/Documentation/ScriptReference/ShaderUtil.GetPropertyType.html)
- [GetPropertyName](https://docs.unity3d.com/6000.2/Documentation/ScriptReference/ShaderUtil.GetPropertyName.html)
- [ShaderPropertyType](https://docs.unity3d.com/6000.2/Documentation/ScriptReference/ShaderUtil.ShaderPropertyType.html)

これらは `Shader` インスタンスのメソッドと `UnityEngine.Rendering.ShaderPropertyType` に置き換わりました。これらの置き換え後の項目は全て UniVRM の最小サポートバージョンである Unity 2022.3 LTS にも存在するため、そのまま置き換えました。

発生していた警告は次のようなものでした。

```
Packages\VRM10\Runtime\Components\Expression\Preview\PreviewMaterialUtil.cs(19,33): warning CS0618: 'ShaderUtil.GetPropertyCount(Shader)' is obsolete: 'Use Shader.GetPropertyCount instead.'
Packages\VRM10\Runtime\Components\Expression\Preview\PreviewMaterialUtil.cs(21,32): warning CS0618: 'ShaderUtil.GetPropertyType(Shader, int)' is obsolete: 'Use Shader.GetPropertyType instead.'
Packages\VRM10\Runtime\Components\Expression\Preview\PreviewMaterialUtil.cs(22,28): warning CS0618: 'ShaderUtil.GetPropertyName(Shader, int)' is obsolete: 'Use Shader.GetPropertyName instead.'
```
2026-07-04 16:20:25 +09:00

67 lines
1.9 KiB
C#

#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
#endif
namespace VRM
{
public enum ShaderPropertyType
{
TexEnv,
Color,
Range,
Float,
Vector,
}
public struct ShaderProperty
{
public string Key;
public ShaderPropertyType ShaderPropertyType;
public ShaderProperty(string key, ShaderPropertyType propType)
{
Key = key;
ShaderPropertyType = propType;
}
}
public class ShaderProps
{
public ShaderProperty[] Properties;
#if UNITY_EDITOR
static ShaderPropertyType ConvType(UnityEngine.Rendering.ShaderPropertyType src)
{
switch (src)
{
case UnityEngine.Rendering.ShaderPropertyType.Texture: return ShaderPropertyType.TexEnv;
case UnityEngine.Rendering.ShaderPropertyType.Color: return ShaderPropertyType.Color;
case UnityEngine.Rendering.ShaderPropertyType.Float: return ShaderPropertyType.Float;
case UnityEngine.Rendering.ShaderPropertyType.Range: return ShaderPropertyType.Range;
case UnityEngine.Rendering.ShaderPropertyType.Vector: return ShaderPropertyType.Vector;
default: throw new NotImplementedException();
}
}
public static ShaderProps FromShader(Shader shader)
{
var properties = new List<ShaderProperty>();
for (int i = 0; i < shader.GetPropertyCount(); ++i)
{
var name = shader.GetPropertyName(i);
var propType = shader.GetPropertyType(i);
properties.Add(new ShaderProperty(name, ConvType(propType)));
}
return new ShaderProps
{
Properties = properties.ToArray(),
};
}
#endif
}
}