>(1)AdvGraphicObjectVideo内のUpdateメソッドを継承可能なようにご対応お願いしてもよろしいでしょうか。
承知いたしました。
作成しましたので、添付のパッケージファイルを適用してください。
(ダウンロードした添付ファイルの拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)
この変更は、次回の宴のアップデートにも反映させる予定です。
Updateを以下のようにして、override可能にしました。
protected virtual void Update()
また、サウンド用のボリューム値を取得をするメソッドも追加し、これ経由でボリュームを取得するようにしました。
protected virtual float GetVolume()
継承先のクラスで、次のようにすればAmbienceVolumeをマスターボリュームとしたうえで、
CustomVolume でもボリューム値を操作できるようになると思います。
public float CustomVolume { get; set; } = 1.0f;
protected override float GetVolume()
{
Engine.SoundManager.AmbienceVolume * Engine.SoundManager.MasterVolume; *CustomVolume;
}
対象の名前のAdvGraphicObjectVideoCustomを見つけて、CustomVolume を操作するプログラムを書いて、
SendMessageなどで呼び出せば、オブジェクト単位でボリューム変更が可能になると思います。
>上記URL内の「その1 プログラム上から動的にコンポーネントを変える場合」を採用しようと思うのですが、今回の場合用に修正した下記コードの記述場所が分かりません。
>例えばHierarchy上に作成したGameObject上の自作C#コンポーネント内に記述でも問題ないでしょうか?
はい。任意の独自コンポーネントを作成してそこに記述してください。
ただ、Awakeが呼ばれないと(Activeがオフのままだと)動作しない点だけ注意してください。
AdvEngineオブジェクトなどAdvEngineの開始時にはActiveがオンになっているGameObjectにAddComponentするようにしてください。
//プログラム上から動的に作成されるAdvGraphicObjectのコンポーネントを変えるサンプル
public class SampleCreateCustomAdvGraphicObjectComponent : MonoBehaviour
{
private void Awake()
{
AdvGraphicInfo.CallbackCreateCustom += CreateCustom;
}
private void CreateCustom(string filetype, ref Type type)
{
switch (filetype)
{
case AdvGraphicInfo.FileTypeVideo:
//ビデオオブジェクトタイプのコンポーネントを自作のものに変える
type = typeof(AdvGraphicObjectVideoCustom);
break;
default:
break;
}
}
}
2025年7月12日土曜日 16:41:53 UTC+9 sola: