extends Node
# 読込進捗通知シグナル
signal _scene_loading(percent)
# 読込完了シグナル
signal _loaded_scene(scene)
# 読込失敗シグナル
signal _scene_load_error
# ローディングチェック時間
const LIMIT_SEC : float = 0.1
# ローディング積算時間
var loading_time : float
# ローディング対象パス
var target_path : String
# 対象シーンパス設定
func set_target_scene(path):
# ターゲットパスをキャッシュ
target_path = path
# スレッドを利用してリソースを読み込む
ResourceLoader.load_threaded_request(target_path)
# ローディング積算時間初期化
loading_time = 0
return OK
# ローディング処理
func process(delta):
# 進捗通知を格納する配列型変数
var p : Array[int] = [0]
# 進捗メッセージを格納する変数
var ret : int
# ローディング時間の積算
loading_time += delta
# 一定時間間隔で読み込み状況をチェックする
if loading_time > LIMIT_SEC :
# ローディング積算時間初期化
loading_time = 0
# リソースローダーから指定パスのリソースの読み込み状況を取得する
ret = ResourceLoader.load_threaded_get_status(target_path, p)
# 読み込み状況で処理を分ける
match ret :
ResourceLoader.THREAD_LOAD_INVALID_RESOURCE :
# 読み込み不可能
return
ResourceLoader.THREAD_LOAD_IN_PROGRESS :
# 読み込み中
pass
ResourceLoader.THREAD_LOAD_FAILED :
# 読み込み失敗
emit_signal('_scene_load_error')
return
ResourceLoader.THREAD_LOAD_LOADED :
# 読み込み完了
emit_signal('_loaded_scene', ResourceLoader.load_threaded_get(target_path))
pass
# 進捗通知
emit_signal('_scene_loading', p[0])