mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-09-29 06:13:21 -05:00
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.' ```
67 lines
1.9 KiB
C#
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
|
|
}
|
|
}
|