1. 共有スクリプト

共有スクリプトの例

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

これは、別のスクリプトによって参照され、単純なメソッドを公開する共有スクリプトの例です。

ユース ケース

  • スクリプト コードの共有と再利用

共有スクリプト

この例の目的では、共有スクリプトの名前は My Shared Script です。

public string GetExtension(string path)
{
var tokens = path.Split('.');
if (tokens.Length > 1)
{
return "." + tokens[tokens.Length - 1];
}
return null;
}

スクリプトの説明

  1. これは、提供されたファイル名の拡張子を取得するために使用されるパブリック メソッドです。

    public string GetExtension(string path)
    {
    var tokens = path.Split('.');
    if (tokens.Length > 1)
    {
    return "." + tokens[tokens.Length - 1];
    }
    return null;
    }

依存スクリプト

以下の例は、アクション スクリプトの例 (事前コミット フェーズ) から部分的に派生したものですが、アプローチは他のスクリプト タイプでも同じです。

注意

共有スクリプトには、他の共有スクリプトを含めることもできます。ただし、循環参照に注意することが重要です。コンパイル中に循環参照が見つかった場合、ビルド出力は競合するスクリプトに関する詳細を提供します。

#load "My Shared Script.csx"

var entity = Context.Target as IEntity;

// Make sure the following members are loaded
await entity.LoadMembersAsync(new PropertyLoadOption("FileName"), new RelationLoadOption("AssetTypeToAsset"));

var fileName = entity.GetPropertyValue<string>("FileName");
var extension = GetExtension(fileName);

// ...

依存スクリプトの説明

  1. 共有スクリプトをその名前で参照します。複数の #load "<Script Name>" ステートメントを追加することにより、複数の共有スクリプトを参照できます。

    #load "My Shared Script.csx"
    注意

    CLI によって提供される IntelliSense サポートを使用している場合、スクリプト名に .csx 拡張子を追加できます。これにより、ローカル ファイル システムでスクリプトを操作するときにファイルを解決できます。

  2. Context から Target オブジェクトを取得し、IEntity にキャストします。Target は、作成または変更イベントに関与するアセットです。

    var entity = Context.Target as IEntity;
  3. ファイル名プロパティとアセット タイプ リレーションが読み込まれていることを確認します。まだ読み込まれていない場合、それらは遅延読み込みされます。

    await entity.LoadMembersAsync(new PropertyLoadOption("FileName"), new RelationLoadOption("AssetTypeToAsset"));
  4. GetPropertyValue を使用して、Target オブジェクトから FileName プロパティを取得します。

    var filename = entity.GetPropertyValue<string>("FileName");
  5. 共有スクリプトを介して使用可能になる GetExtension(string path) メソッドを呼び出します。

    var extension = GetExtension(fileName);

ベスト プラクティス

スコープ

スクリプトのグローバル スコープにメンバー (メンバー、プロパティなど) を追加することは問題ありませんが、分離を改善し、メンテナンスを容易にするために、メンバーをクラスにグループ化することをお勧めします。上記の例は、次のように変換できます。

public static class FileHelper
{
public static string GetExtension(string path)
{
var tokens = path.Split('.');
if (tokens.Length > 1)
{
return "." + tokens[tokens.Length - 1];
}
return null;
}
}
注意

GetExtension(string path) メソッドは静的になりました。それ以外の場合は、メソッドを呼び出す前に FileHelper インスタンスを作成する必要があります。

メソッドの呼び出しは次のようになります。

var extension = FileHelper.GetExtension(fileName);
この記事を改善するための提案がある場合は、 お知らせください!