第4回 なぜUniTaskがいいのか?async/awaitとは【Unity使いこなし術】

Поделиться
HTML-код
  • Опубликовано: 22 янв 2025

Комментарии • 9

  • @kanokoga
    @kanokoga 10 месяцев назад +1

    勉強になりました。ありがとうございます。

  • @WabiPlant
    @WabiPlant 4 года назад +1

    最高に分かりやすかったです。本当にありがとうございました!

  • @tokusyu
    @tokusyu 3 года назад

    実体がつかめなくてずっと心残りだったんですが、ようやく理解できそうです。ありがとうございます!

  • @つじは-g8p
    @つじは-g8p 3 года назад

    わかりやすい動画をありがとうございます!
    質問なのですが、基底の抽象クラスで同期メソッドとして宣言したものを
    派生先(例えば派生A、派生B)のクラスのうち派生Bのみでawaitを使いたい場合
    どのように設計するのがいいのでしょうか?
    たとえば基底クラスでabstract void GetValue();
    と宣言したとき
    派生BではUniTaskVoid型が使えずasync voidを使うことになってしまいます。
    逆に基底クラスでabstract async UniTaskVoid GetValue();
    と宣言すると
    派生AではUniTaskVoidならasyncつけてね→つける→await使ってないのにasyncになってるよ!と怒られてしまいます。
    voidじゃないときも同様です!(async UniTaskなど)
    もしおすすめの対処法などあったら教えていただきたいです!

    • @amagamina
      @amagamina  3 года назад

      求めているものになっているか分かりませんが、手元でこんな感じのコードにしてみたら特に警告が出ることもなかったです↓Unityのバージョンは2020.3.2f1、UniTaskのバージョンは2.2.5です。
      gist.github.com/ina-amagami/51656d977297541e494964a147b9dfc7
      UniTaskVoidはほとんど使ったことなくてこういう扱い方をして良いのかはちょっと分かりません…。
      public override async UniTask GetClassName()
      {
      return await UniTask.FromResult("A");
      }
      のように書けばasyncを付けていても同期のように扱えるので、すべてasyncでも良いのではないかとは思います。

  • @pchannel86
    @pchannel86 4 года назад +3

    冒頭のasync/awaitについて
    解説動画なら、エイシンク、アウェイトが正しい読みですと説明しておいた方が良いのではないかと思いました。

    • @amagamina
      @amagamina  4 года назад +2

      ご指摘ありがとうございます。DOTweenの動画では補足したのに今回はすっかり忘れてました^^; 以降気をつけます!

  • @orbse1483
    @orbse1483 3 года назад +1

    速攻で矛盾したこと解説するのってどうなんですかね…
    14:45 マルチスレッド:複数のCPUコアを使う処理で、別々のメソッドが『同時に』実行される。
    15:10 マルチスレッド:一つのCPUコアでタイムスライスによって別々のメソッドが『ほぼ同時に』実行される。

    • @amagamina
      @amagamina  3 года назад +6

      14:45 マルチコアで実行するマルチスレッド:複数のCPUコアを使う処理で、別々のメソッドが『同時に』実行される(マルチスレッドはこういうイメージで捉えれば問題ない)。
      15:10 シングルコアで実行するマルチスレッド:一つのCPUコアでタイムスライスによって別々のメソッドが『ほぼ同時に』実行される(厳密にはこういう挙動をしている)。
      ですね。資料を作った段階ではそういう流れで説明するつもりだったのが喋る時には説明が抜け落ちていました。申し訳ないです