サーフェース機能について


Game Maker Language リファレンス > 組み込み関数 用途別 > 2D グラフィック機能 > サーフェース機能について

サーフェース機能について

概要

このセクションでは、サーフェスの作成と操作に関連する機能を扱っています

説明

 特定の状況では、直接スクリーンに描画せず、描画されない"キャンバス"に描画して必要に応じてスクリーンに転送したいことがあります。 このような"キャンバス"はサーフェースと呼ばれ、使用してGameMakerStudioでゲーム作るときのサーフェースは非常に強力なグラフィックツールとなることができます。
 たとえば、破壊することができる "catch"インスタンスの描画をサーフェスに残しておき、そしてそれはまだ存在していたかのように、この方法であなたのようなグラフィカルな効果を可能にして、例えば、スプライトが表面に表示されているデカールの効果を作成することができます。残骸は、血液、など.. 実際の処理のサーフェースのコピーなので処理負荷が低くなります。あなたはサーフェースに行うことができます。もう一つは、テクスチャが操作するようにそれらを使用するか、 "on the fly"スプライトを作成したり、複雑なオーバーレイを作成することです。実際には、サーフェースの使い方は無限大です!

サーフェースは使用することが非常に簡単ですが、あなたがそれらを使用する際に従うべきいくつかの基本的なルールがあります:

  • まず、サーフェースは"いつでも破棄される"ということを理解する必要があります。これはデバイスまたはウィンドウがフォーカスを失う(Windowsであればスクリーンセーバーが起動、Androidであればサスペンド)もしくは最小化されている場合、サーフェースが破棄される可能性があります。これはVRAMに格納されているためターゲットプラットフォームが何らかの要求でVRAMを上書きして確保しようとするためです
  • 2つ目として、サーフェースはVRAMを大量に使用することに注意してください。そのためサイズをできるだけ小さくする必要があります。通常はViewやウィンドウのサイズよりも大きくする必要はありません
  • 3つ目は、「Draw」イベントでサーフェースを描画するようにしてください。常に可能とは限りませんが、「Draw」イベントのdraw関数でスクリーンに描画するのはGameMaker:Studioでの最適な描画方法です。
  • 4つ目は、手動でサーフェースに描画すると、ルームの座標(0,0)が基準座標となります。つまり、サーフェース内のローカル座標をスクリーン座標に変換する必要があります。例えば、Viewのサーフェースに描画したい場合、実際の座標からView座標の差を求めることでサーフェースの座標を求めることができます。その際のソースコードは以下のようになります。
    if view_current = 0
    {
      surface_set_target(surf);
      with (obj_Effect)
      {
         draw_sprite(sprite_index, image_index, x - view_xview[1], y - view_yview[1]);
      }
      surface_reset_target();
    }
    else
    {
      draw_surface(surf, 0, 0);
    }

 サーフェースの基本的な使い方は次のようになります。ー最初にサーフェースを作成して変数にインデックスを割り当てる。その後、ディスプレイよりもViewに描画対象を設定し、様々なものを描画します。一度描画し終えるとそれ以降は毎回スクリーンを書き直す必要があります。
 もう1つ注意すべきは、view_surface_id[0..7]変数にサーフェースを代入して、サーフェース(タイルや背景を含む)へスクリーン全体を描画する必要があります。 このようにして、Viewが対応するサーフェースによって描画されます。

以下の関数はサーフェースを扱うために存在しています。

 これらの関数は、サーフェスを作成および操作するための固有のものです。描画についてはサーフェース描画について?を参照してください

Wiki内検索

#search(): You already view a search box

MENU

ドキュメント

GMLリファレンス

2ch

その他



最新の30件

2024-03-07 2023-08-09 2023-05-21 2023-05-20 2023-05-04 2022-10-13 2022-07-21 2022-07-02 2022-04-06 2021-11-30 2021-11-26 2021-10-03 2021-09-23 2021-08-15 2021-06-02 2021-01-23 2021-01-21 2021-01-19 2021-01-18 2021-01-16 2021-01-15

人気の10件

今日の10件



これまでの訪問者: 3018
今日の訪問者: 1
昨日の訪問者: 0
閲覧者: 1