起動時にすべてをロードするのではなく、起動時に必要なリソースだけをロードし、使用する必要がある場合にのみ個々のリソースをロードできますか?プログラムの実行中にSprites、Textures、Musicを関数経由でロードすることは可能ですか?
どうすればいいですか?
私はC++/SFMLを試してみましたが、これを試してみるとエラーになります。起動時に一度にすべてを読み込む必要がないようにしたいのは、スタートアップ時にプログラムを30秒間白い画面に表示するので、画面がはるかに速くなることが望ましいからです。明確にするため
、私は、sf::Texture
を参照sf::Sprite
、sf::Music
、などだ
UPDATE:ここではいくつかのコードが
だ#include "SFML/Audio.hpp"
#include "SFML/Graphics.hpp"
#include <iostream>
void loadResources();
int main()
{
//create the main window
sf::RenderWindow window(sf::VideoMode(720, 500), "Sky Ocean");
window.setFramerateLimit(60);
window.setKeyRepeatEnabled(false);
//View
sf::View view1(sf::FloatRect(200, 200, 300, 200));
view1.setSize(sf::Vector2f(window.getSize().x, window.getSize().y));
view1.setCenter(sf::Vector2f(view1.getSize().x/2, view1.getSize().y/2));
window.setView(view1);
//load resources
loadResources();
//npc object
class npc npc1;
npc1.sprite.setTexture(textureNPC);
class npc npc2;
npc2.sprite.setTexture(textureNPC2);
class npc npc3;
npc3.sprite.setTexture(textureNPC3);
class npc npc4;
npc4.sprite.setTexture(textureNPC4);
あなたが見ることができるように、私はテクスチャを設定する前に関数を呼び出しますが、私はまだエラーが発生します。
void loadResources()
{
//load npc texture
sf::Texture textureNPC;
if (!textureNPC.loadFromFile("images/npc.png"))
return EXIT_FAILURE;
sf::Texture textureNPC2;
if (!textureNPC2.loadFromFile("images/npc2.png"))
return EXIT_FAILURE;
sf::Texture textureNPC3;
if (!textureNPC3.loadFromFile("images/npc3.png"))
return EXIT_FAILURE;
sf::Texture textureNPC4;
if (!textureNPC4.loadFromFile("images/npc4.png"))
return EXIT_FAILURE;
}
「宣言されていない識別子」というエラーが表示されます。どうすればこの作品を作れますか?
なぜできないのですか?あなたのプログラムがすべてのリソースをロードするために30秒かかる場合、おそらく何か間違っているでしょう。 – Taywee
これを変更して動作させるにはどうすればよいですか? – anarchyistheanswer