Closed7

作業メモ:bevy 0.11 → 0.12

hyoihyoi

Bevy Asset V2関連ののエラー。
bevy::asset::AssetServer::loadの引数に要求されるライフタイムが変わったらしい。

error[E0521]: borrowed data escapes outside of function
   --> src\public\misc.rs:152:24
    |
145 | (   message: &[ MessageSect ],
    |     -------
    |     |
    |     `message` is a reference that is only valid in the function body
    |     has type `&[(&'1 str, &'1 str, f32, bevy::prelude::Color)]`
...
152 |         {   font     : asset_svr.load( *file ),
    |                        ^^^^^^^^^^^^^^^^^^^^^^^
    |                        |
    |                        `message` escapes the function body here
    |                        argument requires that `'1` must outlive `'static`

For more information about this error, try `rustc --explain E0521`.

上記引数に関わる参照がある場合、そのライフタイムを'staticへ変える必要がある。

0.11
pub type MessageSect<'a> =
(   &'a str, //表示文字列
    &'a str, //フォントのAssets
    f32,     //フォントのサイズ
    Color,   //フォントの色
);
0.12
pub type MessageSect =
(   &'static str, //表示文字列
    &'static str, //フォントのAssets
    f32,     //フォントのサイズ
    Color,   //フォントの色
);
hyoihyoi

bevy::asset::AssetServer::load_untypedの戻り値がHandle<LoadedUntypedAsset>へ変わった。
※0.11の時の戻り値であるbevy::asset::HandleUntypedはもう存在しない。

0.11
struct LoadedAssets { handles: Vec<HandleUntyped> }
0.12
use bevy::asset::LoadedUntypedAsset;
struct LoadedAssets { handles: Vec<Handle<LoadedUntypedAsset>> }

<補足>
load_untyped LoadedUntypedAssetの情報がマイグレガイドのNon-blocking load_untyped using a wrapper assetの項に載っている。

hyoihyoi

bevy::asset::AssetServer::get_load_stateの戻り値がLoadStateからOption<LoadState>へ変わった。

0.11
match asset_svr.get_load_state( handle )
{   LoadState::Loaded => (), //ロード完了
    LoadState::Failed => (), //ロード失敗
    _ => (),
}
0.12
match asset_svr.get_load_state( handle )
{   Some ( LoadState::Loaded ) => (), //ロード完了
    Some ( LoadState::Failed ) => (), //ロード失敗
    _ => (),
}
hyoihyoi

ワーニング対応。

warning: use of deprecated method `bevy::prelude::EventReader::<'w, 's, E>::iter`: use `.read()` instead.

bevy::ecs::event::EventReader::iterの使用が非推奨としてワーニング表示されるようになった。
代わりにbevy::ecs::event::EventReader::readを使う。

0.11
if evt_clear.iter().next().is_some() { return }
0.12
if evt_clear.read().next().is_some() { return }

<補足>
マイグレガイドのRefactor EventReader::iter to readの項に情報がある。

hyoihyoi

おや? もう修正が終わってしまった。
https://github.com/hyoi/tigtag/tree/v0.10.0
このゲームAsset V2の恩恵受けるほどasset使い込んでないし、2Dゲームだから3D関係のホットな改善・拡張の影響受けないからだな。

このスクラップは2023/11/21にクローズされました