表示するサンプルコードの言語を指定できます。

シーンとレイヤー

Altseedには、シーンとレイヤーというオブジェクトを管理する機能が存在します。 シーンとレイヤーでは、今までのように直接Engineにオブジェクトを追加した場合とできることは変わりませんが、 他の機能と組み合わせることで、シーン遷移やポストエフェクト等を簡単に実装できるようになります。

これ以降の機能紹介ではシーンとレイヤーの知識が必要となります。

詳細はこちらを御覧ください。

シーンとレイヤーの基本

SS

C++

#include <Altseed.h>

// シーンとレイヤーを手動で設定するサンプル。
int main()
{
    // Altseedを初期化する。
    asd::Engine::Initialize(asd::ToAString("SceneAndLayer_Basic").c_str(), 640, 480, asd::EngineOption());

    // 画像を読み込む。
    auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());

    // シーンクラスのインスタンスを生成する。
    auto scene = std::make_shared<asd::Scene>();

    // レイヤークラスのインスタンスを生成する。
    auto layer = std::make_shared<asd::Layer2D>();

    // 画像描画オブジェクトのインスタンスを生成する。
    auto obj = std::make_shared<asd::TextureObject2D>();

    // オブジェクトの位置とテクスチャを設定する。
    obj->SetPosition(asd::Vector2DF(50, 50));
    obj->SetTexture(texture);

    // 描画するシーンを指定する。
    asd::Engine::ChangeScene(scene);

    // 描画するレイヤーをシーンに追加する。
    scene->AddLayer(layer);

    // 描画するオブジェクトをレイヤーに追加する。
    layer->AddObject(obj);

    // Altseedのウインドウが閉じられていないか確認する。
    while (asd::Engine::DoEvents())
    {
        // Altseedを更新する。
        asd::Engine::Update();
    }

    // Altseedを終了する。
    asd::Engine::Terminate();
}

C#


class SceneAndLayer_Basic
{
    public string Description
    {
        get { return "シーンとレイヤーを手動で生成して操作するサンプル。"; }
    }
    public string Title
    {
        get { return "シーンとレイヤーの基本"; }
    }
    public string ClassName
    {
        get { return "SceneAndLayer_Basic"; }
    }

    // シーンとレイヤーを手動で生成する。
    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("SceneAndLayer_Basic", 640, 480, new asd.EngineOption());

        // 画像を読み込む。
        var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");

        // シーンクラスのインスタンスを生成する。
        var scene = new asd.Scene();

        // レイヤークラスのインスタンスを生成する。
        var layer = new asd.Layer2D();

        //画像描画オブジェクトのインスタンスを生成する。
        var obj = new asd.TextureObject2D();

        // オブジェクトの位置とテクスチャを設定する。
        obj.Position = new asd.Vector2DF(50, 50);
        obj.Texture = texture;

        // 描画するシーンを指定する。
        asd.Engine.ChangeScene(scene);

        // 描画するレイヤーをシーンに追加する。
        scene.AddLayer(layer);

        // 描画するオブジェクトをレイヤーに追加する。
        layer.AddObject(obj);

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }

        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}

Java

class SceneAndLayer_Basic 
{
    public java.lang.String getDescription() {
        return "シーンとレイヤーを手動で生成して操作するサンプル。";
    }
    public java.lang.String getTitle() {
        return "シーンとレイヤーの基本";
    }
    public java.lang.String getClassName() {
        return "SceneAndLayer_Basic";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("SceneAndLayer_Basic", 640, 480, new asd.EngineOption());

        // 画像を読み込む。
        asd.Texture2D texture = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png");

        // シーンクラスのインスタンスを生成する。
        asd.Scene scene = new asd.Scene();

        // レイヤークラスのインスタンスを生成する。
        asd.Layer2D layer = new asd.Layer2D();

        // 画像描画オブジェクトのインスタンスを生成する。
        asd.TextureObject2D obj = new asd.TextureObject2D();

        // オブジェクトの位置とテクスチャを設定する。
        obj.setPosition(new asd.Vector2DF(50, 50));
        obj.setTexture(texture);

        // 描画するシーンを指定する。
        asd.Engine.ChangeScene(scene);

        // 描画するレイヤーをシーンに追加する。
        scene.AddLayer(layer);

        // 描画するオブジェクトをレイヤーに追加する。
        layer.AddObject(obj);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }


        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}

レイヤーのカスタマイズ

SS

C++

#include <Altseed.h>

// このサンプルで使用するカスタマイズしたレイヤー。
class SceneAndLayer_SampleLayer : public asd::Layer2D
{
private:
    // フレーム数を数えるカウンタ。
    int count;

public:
    SceneAndLayer_SampleLayer()
    {
        // カウンタを初期化
        count = 0;
    }

    // 毎フレーム実行される関数をオーバーライド。
    void OnUpdated()
    {
        // フレーム数を数える
        count++;

        // 60フレームごとに
        if (count % 60 == 0)
        {
            // オブジェクトを生成
            auto obj = std::make_shared<asd::TextureObject2D>();

            // オブジェクトのテクスチャを設定
            auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());
            obj->SetTexture(texture);

            // オブジェクトの位置を設定
            auto p = count / 60 * 20;
            obj->SetPosition(asd::Vector2DF(p, p));

            // オブジェクトをこのレイヤーに追加
            AddObject(obj);
        }
    }
};

// Layer2Dを継承することでカスタマイズしたレイヤーを作り、一定時間ごとにオブジェクトを追加するサンプル。
int main()
{
    // Altseedを初期化する。
    asd::Engine::Initialize(asd::ToAString("SceneAndLayer_CustomLayer").c_str(), 640, 480, asd::EngineOption());

    // シーンクラスのインスタンスを生成する。
    auto scene = std::make_shared<asd::Scene>();

    // 描画するシーンを指定する。
    asd::Engine::ChangeScene(scene);

    // レイヤークラスのインスタンスを生成する。
    auto layer = std::make_shared<SceneAndLayer_SampleLayer>();

    // 描画するレイヤーをシーンに追加する。
    scene->AddLayer(layer);

    // Altseedのウインドウが閉じられていないか確認する。
    while (asd::Engine::DoEvents())
    {
        // Altseedを更新する。
        asd::Engine::Update();
    }

    // Altseedを終了する。
    asd::Engine::Terminate();
}

C#


// このサンプルで使用するカスタマイズしたレイヤー。
class SceneAndLayer_SampleLayer : asd.Layer2D
{
    // フレーム数を数えるカウンタ。
    private int count;

    // コンストラクタ
    public SceneAndLayer_SampleLayer()
    {
        // カウンタを初期化
        count = 0;
    }

    // 毎フレーム実行される関数をオーバーライド。
    protected override void OnUpdated()
    {
        // フレーム数を数える
        count++;

        // 60フレームごとに
        if(count % 60 == 0)
        {
            // オブジェクトを生成
            var obj = new asd.TextureObject2D();

            // オブジェクトのテクスチャを設定
            obj.Texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");

            // オブジェクトの位置を設定
            var p = count / 60 * 20;
            obj.Position = new asd.Vector2DF(p, p);

            // オブジェクトをこのレイヤーに追加
            AddObject(obj);
        }
    }
}

class SceneAndLayer_CustomLayer
{
    public string Description
    {
        get { return "Layer2Dクラスを継承して、ふるまいをカスタマイズするサンプル。"; }
    }
    public string Title
    {
        get { return "レイヤーのカスタマイズ"; }
    }
    public string ClassName
    {
        get { return "SceneAndLayer_CustomLayer"; }
    }   

    // Layer2Dを継承することでカスタマイズしたレイヤーを作り、一定時間ごとにオブジェクトを追加するサンプル。
    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("SceneAndLayer_CustomLayer", 640, 480, new asd.EngineOption());

        // シーンクラスのインスタンスを生成する。
        var scene = new asd.Scene();

        // 描画するシーンを指定する。
        asd.Engine.ChangeScene(scene);

        // レイヤークラスのインスタンスを生成する。
        var layer = new SceneAndLayer_SampleLayer();

        // 描画するレイヤーをシーンに追加する。
        scene.AddLayer(layer);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }

        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}

Java

class SceneAndLayer_CustomLayer 
{
    public java.lang.String getDescription() {
        return "Layer2Dクラスを継承して、ふるまいをカスタマイズするサンプル。";
    }
    public java.lang.String getTitle() {
        return "レイヤーのカスタマイズ";
    }
    public java.lang.String getClassName() {
        return "SceneAndLayer_CustomLayer";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("SceneAndLayer_CustomLayer", 640, 480, new asd.EngineOption());

        // シーンクラスのインスタンスを生成する。
        asd.Scene scene = new asd.Scene();

        // 描画するシーンを指定する。
        asd.Engine.ChangeScene(scene);

        // レイヤークラスのインスタンスを生成する。
        SceneAndLayer_SampleLayer layer = new SceneAndLayer_SampleLayer();

        // 描画するレイヤーをシーンに追加する。
        scene.AddLayer(layer);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }


        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}
class SceneAndLayer_SampleLayer extends asd.Layer2D
{
    private int count;
    protected void OnUpdated()
    {
        // フレーム数を数える
        count++;

        // 60フレームごとに
        if(((count % 60 ) == 0))
        {
            // オブジェクトを生成
            asd.TextureObject2D obj = new asd.TextureObject2D();

            // オブジェクトのテクスチャを設定
            obj.setTexture(asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png"));

            // オブジェクトの位置を設定
            int p = ((count / 60 ) * 20);
            obj.setPosition(new asd.Vector2DF(p, p));

            // オブジェクトをこのレイヤーに追加
            AddObject(obj);
        }
    }
    public SceneAndLayer_SampleLayer()
    {
        // カウンタを初期化
        count = 0;
    }
}

シーンのカスタマイズ

SS

C++

#include <Altseed.h>

// このサンプルで使用するカスタマイズされたシーン。
class SceneAndLayer_SampleScene : public asd::Scene
{
private:
    // フレーム数を数えるカウンタ。
    int count;

public:
    SceneAndLayer_SampleScene()
    {
        // カウンタを初期化
        count = 0;
    }

    void OnUpdated()
    {
        // フレーム数を数える。
        count++;

        // 60フレームごとにレイヤーを追加する処理
        if (count % 60 == 0)
        {
            // レイヤークラスのインスタンスを生成する。
            auto layer = std::make_shared<asd::Layer2D>();

            // 描画するレイヤーをシーンに追加する。
            AddLayer(layer);

            // オブジェクトを生成する。
            auto obj = std::make_shared<asd::TextureObject2D>();

            // オブジェクトに画像を設定する。
            auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Picture1.png").c_str());
            obj->SetTexture(texture);

            // オブジェクトの位置を設定する。
            auto p = count / 60 * 20;
            obj->SetPosition(asd::Vector2DF(p, p));

            // オブジェクトをレイヤーに追加する。
            layer->AddObject(obj);
        }
    }
};

// Sceneクラスを継承することでカスタマイズされたシーンを作り、一定時間ごとにレイヤーを追加していくサンプル。
int main()
{
    // Altseedを初期化する。
    asd::Engine::Initialize(asd::ToAString("SceneAndLayer_CustomScene").c_str(), 640, 480, asd::EngineOption());

    // シーンクラスのインスタンスを生成する。
    auto scene = std::make_shared<SceneAndLayer_SampleScene>();

    // 描画するシーンを指定する。
    asd::Engine::ChangeScene(scene);

    // Altseedのウインドウが閉じられていないか確認する。
    while (asd::Engine::DoEvents())
    {
        // Altseedを更新する。
        asd::Engine::Update();
    }

    // Altseedを終了する。
    asd::Engine::Terminate();
}

C#



// このサンプルで使用するカスタマイズされたシーン。
class SceneAndLayer_SampleScene : asd.Scene
{
    // フレーム数を数えるカウンタ。
    private int count;

    public SceneAndLayer_SampleScene()
    {
        // カウンタを初期化
        count = 0;
    }

    protected override void OnUpdated()
    {
        // フレーム数を数える。
        count++;

        // 60フレームごとにレイヤーを追加する処理
        if(count % 60 == 0)
        {
            // レイヤークラスのインスタンスを生成する。
            var layer = new asd.Layer2D();

            // 描画するレイヤーをシーンに追加する。
            AddLayer(layer);

            // オブジェクトを生成する。
            var obj = new asd.TextureObject2D();

            // オブジェクトに画像を設定する。
            obj.Texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Picture1.png");

            // オブジェクトの位置を設定する。
            var p = count / 60 * 20;
            obj.Position = new asd.Vector2DF(p, p);

            // オブジェクトをレイヤーに追加する。
            layer.AddObject(obj);
        }
    }
}

class SceneAndLayer_CustomScene
{
    public string Description
    {
        get { return "Sceneクラスを継承して、ふるまいをカスタマイズするサンプル。"; }
    }

    public string Title
    {
        get { return "シーンのカスタマイズ"; }
    }

    public string ClassName
    {
        get { return "SceneAndLayer_CustomScene"; }
    }

    // Sceneクラスを継承することでカスタマイズされたシーンを作り、一定時間ごとにレイヤーを追加していくサンプル。
    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("SceneAndLayer_CustomScene", 640, 480, new asd.EngineOption());

        // シーンクラスのインスタンスを生成する。
        var scene = new SceneAndLayer_SampleScene();

        // 描画するシーンを指定する。
        asd.Engine.ChangeScene(scene);

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }

        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}

Java

class SceneAndLayer_CustomScene 
{
    public java.lang.String getDescription() {
        return "Sceneクラスを継承して、ふるまいをカスタマイズするサンプル。";
    }
    public java.lang.String getTitle() {
        return "シーンのカスタマイズ";
    }
    public java.lang.String getClassName() {
        return "SceneAndLayer_CustomScene";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("SceneAndLayer_CustomScene", 640, 480, new asd.EngineOption());

        // シーンクラスのインスタンスを生成する。
        SceneAndLayer_SampleScene scene = new SceneAndLayer_SampleScene();

        // 描画するシーンを指定する。
        asd.Engine.ChangeScene(scene);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }


        // Altseedを終了する。
        asd.Engine.Terminate();
    }
}
class SceneAndLayer_SampleScene extends asd.Scene
{
    private int count;
    protected void OnUpdated()
    {
        // フレーム数を数える。
        count++;

        // 60フレームごとにレイヤーを追加する処理
        if(((count % 60 ) == 0))
        {
            // レイヤークラスのインスタンスを生成する。
            asd.Layer2D layer = new asd.Layer2D();

            // 描画するレイヤーをシーンに追加する。
            AddLayer(layer);

            // オブジェクトを生成する。
            asd.TextureObject2D obj = new asd.TextureObject2D();

            // オブジェクトに画像を設定する。
            obj.setTexture(asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Picture1.png"));

            // オブジェクトの位置を設定する。
            int p = ((count / 60 ) * 20);
            obj.setPosition(new asd.Vector2DF(p, p));

            // オブジェクトをレイヤーに追加する。
            layer.AddObject(obj);
        }
    }
    public SceneAndLayer_SampleScene()
    {
        // カウンタを初期化
        count = 0;
    }
}