LoginSignup
0
1

More than 5 years have passed since last update.

C# / Unity2D 学んだこと #3

Posted at

C#

パッケージマネージャ

  • プロジェクトのパッケージマネージメントは、NuGetというものを使うらしい
    • ナゲット?
  • .NET Coreをインストールすると入る、dotnetコマンドにはNuGetの機能が内包されていて、
dotnet add package TwitterOAuth
  • という感じで書く
  • WindowsではPackage Managerというツールもあるらしいが、yum/aptと同等のものと言ってる人もいてよくわからない
  • Java(Maven)のようにGroupIdのような名前空間的なものはなく、ライブラリの名前のみでインストールできる
  • https://www.nuget.org/
    • 92k Unique Packages
  • https://mvnrepository.com/
    • 7820k
  • なのでライブラリに関してはJavaの方が多そう
    • もちろん死んでるライブラリもJavaの方が多いとは思う

匿名クラスとdynamic

  • 匿名クラスという、非常に便利なものがある
using System;
using System.Collections.Generic;

class Hoge
{  
  public static void Main(string[] args)
  {
    var dyn = new { Age = 30, Name = "mk2" };
    Console.WriteLine(dyn.Age);
  }
}
  • ジェネリクスが必要なところでも使えるらしいので、以下のようなコードも行ける
using System;
using System.Collections.Generic;

class Hoge
{  
  public static void Main(string[] args)
  {
    var dyn = new { Age = 30, Name = "mk2" };
    var dict = new Dictionary<string, dynamic>();
    dict.Add("test", dyn);
    Console.WriteLine(dict["test"].Age);
  }
}
  • dynamicはコンパイル時の型チェックをスルーしてくれる型らしい(乱用するとやばそう)
    • ちなみにUnityでは、使っているMono(.NETの互換OSS)のバージョンが古く、利用できないようだ

Unity2D

1回Prefab化したものをSceneウィンドウで編集したい

  • Sceneウィンドウで編集→もとのPrefabにドロップすると反映された

アニメーション

  • 今の理解
    • Animation Clip -> Animation Controller -> Animator Component
  • の順で依存関係を持つ
  • Animator ComponentはGameObjectに紐づくため再利用は出来ないが、他のAnimation ClipやControllerは一度作れば複数のAnimator Component/Animation Controllerに紐付けたり出来る
  • keyframeとは?
  • Animation Controllerの状態遷移について
    • ENTRYにとどまることが出来ない?
      • 初期状態は何もアニメーションさせず、あるタイミングでアニメーションを開始させたいと思ったが、どうも何もアニメーションしない状態を作らないと行けないようだ
      • https://docs.unity3d.com/jp/540/Manual/StateMachineTransitions.html
      • Unityのドキュメントを見ても、Idleという状態が存在している

Coroutine

  • コルーチン
  • https://docs.unity3d.com/jp/530/Manual/Coroutines.html
  • Updateの処理とは別のタイミングで処理を実行させたいときに使う
  • コルーチンの基本
    • StartCoroutine(IEnumarator)でコルーチンを開始できる
    • コルーチンは関数実行の中断・再開用システム
    • yield hogehogeでコルーチン固有の処理を行う
      • yield break - コルーチンの処理を停止する
      • yield return new WaitForSeconds(x) - x秒待つ
    • コルーチンはあくまで平行プログラミングなので、並列に何かが実行されることはない
    • 個人的にコルーチンを使ってみた感想として、コレ使えばなんでも出来るな…と思った
      • アニメーションも他の時間経過が必要な処理も全部コルーチンで出来る
      • 故に多用しすぎるとヤバイ気もする
  • コルーチンの注意点
    • StartCoroutineは既存の開始されているコルーチンについて何も関与しないので、コルーチンの管理は開発者が行う必要がある
      • void Updateでコルーチンを開始する場合は要注意
      • 大量のコルーチンを使うとそれだけ大量のコルーチン状態変数が生まれる
      • ヤバイ(小並感)

C#/Unity 学習1週間目だが、ゲームを作ってみた

ss1_compressed.jpg

  • 素材は本屋で売ってた2k円ぐらいの素材集(商用利用可)
  • フォントはフォントなにあったフォントを使う
  • 反省点
    • コルーチンの使い方が雑
      • ゲームロジックとアニメーションのタイミング合わせをコルーチンで行ってしまったので、アニメーションのWaitForSecondsの値を変えるとゲームロジックに変化が生まれる(ヤバイ)
    • Unityのシーンエディタをうまくあつかえていない
      • ビューの生成をコードでやっているので、Unityのシーンエディタを使いこなせていない
      • どこからどこまでUnityのシーンエディタで生成すべきかイマイチわからず
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1