cocos2dx luaバインディング:カスタムクラスの関数を自動的にバインドします[再現]

1.ブログ紹介

強調:このブログ投稿の内容はオリジナルではなく、次のリンクから複製されています。優れた記事学習を提供してくれたブロガーに感謝します。

オリジナル:https//www.cnblogs.com/chevin/p/5899516.html

 

コンテンツの紹介:このブログでは、カスタムC ++スクリプトをcocos2dxのluaにバインドする特定の手順を紹介しています。元のブロガーが非常に明確に記述しており、記録と学習のためにここに複製されています。


2.コンテンツ

 

 

1.最初にC ++クラスStudentを定義します

cocos2d-x \ cocosフォルダーの下に新しいuser_defineフォルダーを作成して、2つのファイルを配置します。

注:このクラスはRefを継承せず、単純なC ++クラスです。

①ヘッダーファイルStudent.h 

②cppファイルStudent.cpp 

 

2.これら2つのファイルをlibcocos2dプロジェクトに追加します

 

 

3.対応するini構成ファイルを変更します

①ファイルcocos2dx_csloader.iniをcocos2d-x \ tools \ toluaにコピーし(他のファイルをコピーすることも可能です)、ファイル名をuserdefine_student.iniに変更します。

変更に必要なフィールド値のリストは次のとおりです:

②genbindings.pyで使用される名前を定義します

[cocos2dx_csloader]が[userdefine_student]に変更されました

③C++中間ブリッジ関数のプレフィックスを生成します

prefix = cocos2dx_csloaderがprefix = userdefine_studentに変更されました

④このクラスのモジュールプレフィックスはLuaで使用されます(モジュールプレフィックスは使用しません)

target_namespace = ccはtarget_namespace =に変更されます

⑤ヘッダーファイルの場所

ヘッダー=%(cocosdir)s / cocos / editor-support / cocostudio / ActionTimeline / CSLoader.h修改是ヘッダー=%(cocosdir)s / cocos / user_define / Student.h

⑥自動生成が必要なクラス名

classes = CSLoaderはclasses = Studentに変更されます

✓クラスで生成されない(無視される)関数。ここでは無視する必要のある関数がないので、それらをクリアします。

skip = CSLoader :: [nodeFromXML nodeFromProtocolBuffers createTimeline nodeWithFlatBuffers createActionTimelineNode createNodeWithDataBuffer createTimelineWithDataBuffer ^ createNode $]

着替える

スキップ= 

 

4.genbindings.pyファイルを変更します

①上記で追加したuserdefine_student.iniをcmd_argsパラメーターで構成します

iniファイルの名前:(iniファイル[]の最初の行のパラメーターに対応し、データが自動的に生成されるフォルダーの名前)
'userdefine_student.ini' :( 'userdefine_student'、 'lua_userdefine_student_auto')、\

②2番目のパラメータが対応しない場合、設定ファイルにセクションが見つからないというエラーが発生します。

 

5. genbindings.pyを実行して、C ++中間ブリッジファイルを再生成します。

cocos2d-x \ cocos \ scripting \ lua-bindings \ autoディレクトリにある2つの自動生成ファイルを確認できます。

lua_userdefine_student_auto.hpp和lua_userdefine_student_auto.cpp 

 

6.関数をluaに登録し、libluacocos2dプロジェクトを見つけます 

①生成された2つのファイルをプロジェクトに追加します

 

②CCLuaStack.cppファイルにヘッダーファイル参照を追加します

#include "scripting / lua-bindings / auto / lua_userdefine_student_auto.hpp"

init関数で、Luaに登録する関数を追加します(この関数では、auto / manualによって生成されたクラスがそれぞれ登録されます)

register_all_userdefine_student(_state);

7.プロジェクトを再コンパイルし、Luaで使用します

 

1人の地元の学生= Student:new()
2人のstudent:print()


3.プッシュ

Github:https://github.com/KingSun5


4.結論

ブロガーの記事がよく書かれていると思われる場合は、ブロガーに注意を払い、ブログ投稿を気に入ってください。また、ブロガーの能力は限られています。記事に誤りがある場合は、コメントして批判してください。 。

       QQ交換グループ:806091680(中国人)

       このグループは、CSDNブロガーのChinarによって作成されました。お勧めします。私もグループにいます!

       この記事は復刻版に属しています。元の記事はブログ投稿の上部にあります。有名な原作者の出典を転載してください。

おすすめ

転載: blog.csdn.net/Mr_Sun88/article/details/111499627