アズマ
81 views
タグを編集する

C#非同期処理お勉強

非同期処理とは

非同期処理とは2種類の処理が存在し、片方の処理を行っている間に、別の処理をおこなうことができる処理方法である。

今回はUnityで用いられる AsyncOperation型 を用いた処理の解説である。
(情報源は私の学友二人から教えてもらった。本当にありがとう。)

AsyncOperation型について

AsyncOperation型は非同期処理に必要な情報を複数個所持している型である。
所持しているのは以下の3つである

・isDone  
動作が終了したか確認する(読み取り専用)

・priority 
非同期で読み込む際の優先順位を設定する。

・progress 
進捗状況を表示する(読み取り専用)

基本的には一番最初に記載されている「isDone」を使用すればよいだろう。

例文

今回はシーンの切り替えに用いてみる

public class LoadScene :MonoBehaviour
{

 //AsyncOperation型を宣言
 private AsyncOperation async

 void main()
 {
  LoadScene();
 }

 void LoadScene()
 {
  //指定のコルーチンを開始する
  StartCoroutine("LoadColtin")
 }

 IEnumerator LoadColtin()
 {
  //シーンの読み込みをする(処理が完了するとisDone1がtrueになる)
  async = SceneManager.LoadSceneAsync("シーンの名前");

  //asyncのisDoneがtrueになっていなければnullを返す。
  while (!async.isDone)
  {
    //ここに同期してる時にしたい処理を記載する

  //処理が実行されたらnullを返す
    yield return null;
  }
 
 }

}

解説

まず始めにmainに記載さえているLoadSceneが呼び出される。
今回は書いていないが、キーによって一度のみ処理する形になっていると思っていてくれると助かります。

次にLoadScene()の内部処理により StartCoroutine("LoadColtin") が実行されます。
StartCoroutineは引数を実行処理します。(今回は LoadColtin)

コルーチンとは簡単に言うと、中断できる処理のまとまりのことである。
数秒後に何か処理を行いたいときや非同期のような処理を作成するときなどに使います。

IEnumeratorについて

取得したコレクションの要素を一つづつ参照する操作をまとめたインターフェースのことである

LoadColtin()**の中身

async = SceneManager.LoadSceneAsync("シーンの名前");

これは SceneManagerに登録されている引数に記載された、シーンの情報を受け取り、そのシーンに切り替わっているかどうかを確認するものである。

ここでシーンが変わっていれば、asyncにはTrueが返されて、async.isDoneTrueになります。

while文の中身

  while (!async.isDone)
  {
    //ここに同期してる時にしたい処理を記載する

    //処理が実行されたらnullを返す
    yield return null;
  }

これは、async.isDoneFlaseであれば、nullを返す処理。

この時、{}の中に記載する処理が、ロードしている間に行ってくれる処理となります。(例)ロード画面、結果の計算など

yield return null を記載してNULLを返している理由は、async.isDonetrueであると認識されないようにするためである。

yield return nullについて

yield return nullは、処理を1フレーム停止させ、次のフレームから再開させることができます。

これは1フレームだけでなく、
yield return new WaitForSeconds(止めたい秒数);
のような記載方法で、止めたい時間を指定することもできます

この記事はどうでしたか?
👍&ツイートをお願いします!

コメント

コメントにはログインが必要です

アズマ
21 投稿

ななれん

ゲーム紹介
初心者の方へ
リセマラ
Tips

ゲームシステム

マーケット
ガチャ
拠点
部隊
アニマ
スキル
ミッション

錬金術

素材
アニマ錬成
道具
装飾品

クエスト

魔獣討伐
アロマ討伐
素材探索
クラス昇級試験

イベント

追跡!赤針の舞踏姫
過去イベント

リンク

公式Twitter
公式サイト
AppStore
GooglePlay

その他

メニュー
編集ガイド

最新の5件

メニュー
読み込み中