Unityでの立ち絵の取得について

342 views
Skip to first unread message

つの

unread,
Nov 23, 2017, 10:20:53 PM11/23/17
to 宴ユーザーグループ
C#スクリプトからキャラクターとパターン名で
宴の立ち絵画像を取得するにはどうすればよいのでしょうか。
CharacterManager辺りを見ても良くわからなかったので……。

宴のバージョン: 3.2.6
UnityのバージョンとOS: Unity2017.1.0p4 Windows

マッドネスラボ

unread,
Nov 24, 2017, 1:40:52 AM11/24/17
to 宴ユーザーグループ
具体的になにがわからないのでしょうか

つの

unread,
Nov 24, 2017, 2:28:53 AM11/24/17
to 宴ユーザーグループ
エクセルから立ち絵を呼びだしている流れが、ですね。

例えばステータス画面のような場所に立ち絵を表示させるのに
ひとまずDicingImageをアタッチしてパターンを設定していたのですが、
服装に変化があった場合などのためにわざわざ既にエクセルで設定してある
表示条件をスクリプト内でも用意しないといけないのは二度手間だったので、
キャラクターとパターン名を指定してソースイメージを取得するなり、
既にアタッチしてあるDicingImageの内容を
切り替える方法はないものだろうかと思い、質問させていただきました。


マッドネスラボ

unread,
Nov 24, 2017, 2:50:20 AM11/24/17
to 宴ユーザーグループ
であれば、こんな感じで可能かと思います。

using UnityEngine;
using Utage;
using UtageExtensions;

/// <summary>
/// ダイシングキャラクター表示サンプル
/// </summary>
public class UtageUguiCgCharcterViewer : MonoBehaviour
{
//ローダー
public AdvGraphicLoader Loader { get { return this.GetComponentCacheCreateIfMissing<AdvGraphicLoader>(ref loader); } }
AdvGraphicLoader loader;

//ADVエンジン
public AdvEngine Engine { get { return this.engine ?? (this.engine = FindObjectOfType<AdvEngine>() as AdvEngine); } }
[SerializeField]
AdvEngine engine;

[SerializeField]
DicingImage dicingImage;

public void Load( string name, string pattern)
{
AdvGraphicInfo graphicInfo = Engine.DataManager.SettingDataManager.CharacterSetting.KeyToGraphicInfo(AdvCharacterSetting.ToDataKey(name, pattern)).Main;
Loader.LoadGraphic(graphicInfo, () => OnLoaded(graphicInfo));
}

void OnLoaded(AdvGraphicInfo graphic)
{
switch (graphic.FileType)
{
case AdvGraphicInfo.FileTypeDicing:
dicingImage.DicingData = graphic.File.UnityObject as DicingTextures;
string pattern = graphic.SubFileName;
dicingImage.ChangePattern(pattern);
break;
default:
Debug.LogError(graphic.FileType + " is not support ");
break;
}
}
}


Characterシートの設定は Engine.DataManager.SettingDataManager.CharacterSetting. にあります。
具体的な各行の情報は、.CharacterSetting.KeyToGraphicInfo()で取得するのですが、
その際に、キャラクター名とパターン名をキーに変換する AdvCharacterSetting.ToDataKey(name,pattern)というのを使う必要があります。

最後にある「.Main」というのはちょっとややこしいのですが、通常はMainで大丈夫です。
Conditional(フラグなどでキャラクターの表示パターンを変える機能)を使用する時はここ変える必要がありますが、あまり使用例はないかと思います。

上記のやり方で取得したAdvGraphicInfoには、ファイル情報やパターン名など基本的なグラフィックの表示条件が入っていますので、あとはそれを使ってファイルをロードしてパターン変更をしてください。

megum...@gmail.com

unread,
Nov 24, 2017, 3:12:39 AM11/24/17
to 宴ユーザーグループ
上記の通りロードして DicingImage.ChangePattern(graphicInfo.SubFileName);
といった感じでうまくいきました、ありがとうございます。
Reply all
Reply to author
Forward
0 new messages