虎の巻 - Effective AngelScript Edit

Last-modified: 2010-04-27 (火) 22:41:09

このページについて Edit

AngelScript(以下AS)を使うにあたって知っておいたほうがお得な情報を紹介していきます。

オブジェクトを引数にとるときはオブジェクトハンドルではなく参照を使おう Edit

下記のような2つの関数があった場合,funcHandleのほうが処理が重くなります。

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
 
 
-
!
 
 
-
!
class Class {};
 
void funcRef( Class& obj )
{
}
 
void funcHandle( Class@ obj )
{
}

これは,funcHandleはオブジェクトハンドルで受け取っていることが原因で参照カウント処理が挿入されるためです。
オブジェクトハンドルを引数に使わないといけないケースはないはずなので
関数の引数には参照のみを使うようにしましょう。

よく使うコードはASではなくC++で書こう Edit

ASコード上で定義したクラスの動作はあまり速くありません。

遅い原因として
・ASコード上で定義したクラスはアクセス時に参照カウント処理が必ず入る
・仮想マシン上でコードが実行されるためネイティブなC++コードと比べて処理が重い
といったことが挙げられます。

このようなところから,よく使うコードはC++で書いてバインドするようにしましょう。

筆者はVector3やMatrix34などよく使う数学クラスなどをC++で書いてバインドしています。

ASコードでしか登録できないもの・C++コードでしか登録できないものを把握しよう Edit

ASコードで登録できるもの全てがC++コードで登録できるわけではありません。
また逆に,C++コードで登録できるもの全てがASコードで登録できるわけではありません。
ASコード,C++コード,それぞれが登録できるものは把握しておきましょう。

下記の表がそれのまとめになります。

項目ASC++
クラスを継承したクラスの宣言ox
インターフェースを継承したクラスの宣言ox
POD型のクラスの宣言xo
値型のクラスの宣言xo

    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS