1

私はまだShiVa3dに非常に慣れておらず、iOSにはかなり慣れていません。

iPadで動くアプリを開発したいです。iOS で実行される Objective-C でかなり多くのロジックを記述し、ShiVa でいくつかの単純な lua コードを記述します。

これが私がやりたいことの非常に簡単な例です:

1) 私のアプリには単一のモデルがあり、それが読み込まれて表示されます。

2) Lua ShiVa コード内で、MainAI の一部として、x、y、z などのパラメーターを受け入れるメソッドを作成します。このメソッドを「ShiVaCameraToPostition(objX,objY,objZ)」と呼びましょう。

3) 私の iOS Objective-C コード内で、この「ShiVaCameraToPostition」メソッドをパラメータで呼び出したい

これは可能ですか?

どうすればこれを行うことができますか?ドキュメントで何を探すべきですか?人々が指摘できる例はありますか?

よろしくお願いします。上記があいまいな場合はお知らせください。

4

2 に答える 2

1

わかりました、ある種の成功。ベストプラクティスで私を打ち負かさないでください。私はただこれをやりたかっただけです。

そこで、汚い仕事をするためのクラスを作成しました。これを ShivaInterface と呼びましょう。

ShivaInterface.h
ShivaInterface.mm /*** note the .mm ***/

ヘッダーは次のとおりでした。

#import <Foundation/Foundation.h>

@interface ShivaInterface : NSObject{

}

+(const void*)getMyParams:(NSNumber*)x andY:(NSNumber*)y;

@end

そして次のように実装されます:

#import "ShivaInterface.h"
#import "S3DXPlugin.h" //is this the correct thing to include? it worked for me

@implementation ShivaInterface

+(const void*)getMyParams:(NSNumber*)x andY:(NSNumber*)y{
    static S3DX::AIVariable args[2];
    args[0].SetNumberValue([x floatValue]);
    args[1].SetNumberValue([y floatValue]);
    return args;
}
@end

次に、私の純粋な Obj-c メソッドで:

const void *params = [ShivaInterface getMyParams:[NSNumber numberWithFloat:100.0f] andY:[NSNumber numberWithFloat:100.0f]];
S3DClient_SendEventToCurrentUser("MainAi","onDoRotate",2,params);

それはうまくいきますが、それが美しくないことはわかっています。C/C++ を深く理解していないため、おそらく役に立たないでしょう。

(完全なスレッドはこちら: http://www.stonetrip.com/developer/forum/viewtopic.php?p=29073#p29073 )

于 2011-02-03T09:24:20.410 に答える
0

思われる ShiVa メソッドを呼び出すことはできません。次を使用してハンドラーを呼び出す必要があります。

S3DClient_SendEventToCurrentUser("MainAI","onMyHandler",0);

3 番目と 4 番目のパラメーターは、引数の数と配列内の引数です (個別に調べる必要があります)。

于 2011-02-01T15:36:28.413 に答える