私はテクスチャオブジェクトへのアクセスを取得するために見てきたすべての例は以下のような何かをすることです:Pistonのテクスチャやスプライトとして使用するオブジェクトのコレクションを格納する錆の慣用方法は何ですか?
let img = Texture::from_path(...)
これは、テクスチャの配列を持つために、それはlet mut images: Vec<Texture>;
のようなものでなければならないこと印象を与えますfrom_path
はResult<Texture<R>, String>
を返します。
そして、実際に道に迷い込んでいるTexture<R>
です。 Texture<R>
を作成するには、crates
とuse ...
という非常に多くのものが必要であり、それは完全に間違っていると感じます。
let loaded_textures:Vec<Option<T>> = Texture::from_path(...)
又はピストンが持っているほとんどすべてをプルイン:
は正しいことですか?または、他の何か?
私の目標は、
struct Drawables {
obj_name: &'static str,
image: Texture<gfx_device_gl::Resources>, // or something else
}
let mut my_objects: Vec<Drawable>;
fn LoadDrawables(window: &mut PistonWindow) -> Vec<Drawable> {
let assets = find_folder::Search::ParentsThenKids(3, 3)
.for_folder("assets")
.unwrap();
let img1 = assets.join("some_img0.png");
let img1 = Texture::from_path(
&mut window.factory,
&img1,
Flip::None,
&TextureSettings::new(),
).unwrap();
let img2 = assets.join("some_img1.png");
let img2 = Texture::from_path(
&mut window.factory,
&img2,
Flip::None,
&TextureSettings::new(),
).unwrap();
vec![
Drawable {
obj_name: "orc",
image: rogue,
},
Drawable {
obj_name: "bat",
image: floor,
},
]
}
私が引っ張って避けるようにしようとしているクレートがgfx_device_gl
であることです。この作成には間違っていると感じます。既にピストンのようなゲームエンジンを搭載している場合は、少し低いレベルのようです。
私はあなたに本当に尋ねるものは何もありません。はい、 'Vec'は物事のコレクションを格納する素晴らしい方法です。 'HashMap'は物事のコレクションを格納する素晴らしい方法です。利用可能なコレクションが多数あります(標準ライブラリと外部にあります)。あなたは '結果'と、あなたがクレートを使用してステートメントを使用しなければならないという事実に言及します。なぜあなたは「ピストンが持っているほとんど全てを引っ張る」必要があると思いますか? – Shepmaster
vecのパスからテクスチャのvec(またはハッシュマップ)を作成しますか? – Boiethios
すべての輸入品は何ですか?私が知ることから、既に持っていなければならない 'PistonWindow'から' Factory' implを得ることができます。次に、2つの新しいインポートがあります: 'TextureSettings'と' Flip'です。どちらも他の依存関係なしで構築できます。 –