Maya .NET API と Maya C++ API の主な違いは次のとおりです。
getter 関数は、値を返し、引数は持たず、アプリケーションの状態に対する識別可能なエフェクトを持たない関数です。getter 関数名は get、is、has、または can のプリフィックスから始まるか、C++ ヘッダー ファイルでは「const」関数として修飾されます。setter 関数は、単一の引数を持ち、set のプリフィックスで始まり、getter 関数と同じルート名を持つ void 関数です。対応する setter 関数(同じルート名)を持つ getter 関数は、読み書き可能なプロパティにマップされますが、setter 関数を持たない getter 関数は、読み取り専用プロパティにマップされます。プロパティの名前は getter 関数と同じですが、プリフィックスが除去されています。
場合によっては、新しいプロパティが既存のメソッド名と重複するため、プロパティの名前を変更しなければならい場合があります。Property という語が、新しいプロパティ名に追加されました。たとえば、index() は、indexProperty になりました。
C# のプロパティに関する詳細については、MSDN (http://msdn.microsoft.com/ja-jp/default.aspx)および「プロパティ(C# プログラミング ガイド)」を参照してください。
たとえば、MDagMessage::addParentAddedCallback(callback) の代わりに、MDagMessage.ParentAddedEvent += callbackを実行します。
MSceneMessage クラスでは、enum Message の値で指定された各メッセージには独自のイベント ハンドラが含まれるようになったため、enum は有効ではなくなりました。たとえば、MSceneMessage::addCallback( MSceneMessage::kSceneUpdate, callback ) の代わりに、MSceneMessage.SceneUpdate += callback を実行します。
オブジェクトのインスタンスに関連するコールバック(MDagPath、MPlug など)の場合、イベント ハンドラはそのオブジェクトのクラスで直接見つけることができます。たとえば、MModelMessage::addNodeAddedToModelCallback(obj, callback) の代わりに、obj.NodeAddedToModel += callback (MObjectwith 型の obj を使用)を実行します。
メモリ リークが発生しないように、コールバックが不要になった場合は、コールバックを登録解除する(対応するイベント ハンドラからコールバックを除去する)必要があります。プラグインが Maya からアンロードされると自動的にコールバックの登録を解除する新しいメカニズムが追加されました。
イベントの使用方法を確認するには、Developer Kit インストールの devkit¥dotnet¥examples フォルダの pluginCallbacks サンプルを参照してください。C# イベントの詳細については、MSDN の「イベント(C# プログラミング ガイド)」を参照してください。
IEnumerable<T>の使用: イテレータは、LINQ の使用を容易にする IEnumerable<T>をサポートしています。IEnumerable の詳細については、「Maya .NET API で IEnumerable および LINQ を使用する」および MSDN の「IEnumerable インターフェイス」を参照してください。