はきだめ

主にプログラミングに関することをかきます

【Unity】コルーチンまわりのメモ

コルーチンの定義

  • 返り値がIEnumerator
  • yeild rutnrn ◯を含む

コルーチンのいいところ

◯秒待ったら処理をする、××の処理が終わったら〇〇の処理をやるといったプログラムを直感的に書ける

サンプル

IEnumerator enumerator;
void Start () {
    enumerator = Hoge();    
    StartCoroutine(enumerator);
}
IEnumerator Hoge(){
    Debug.Log("hoge");
    yield return null;
}

中断、待機、終了など

yield return null; // 1フレーム処理を中断する
yield return new WaitForSeconds( num ); //num秒待機する
yield break; //関数を終了させる

StartCoroutineの罠

  • コルーチンを回しているオブジェクトが非アクティブになったとき停止する
  • MonoBehaviourを継承していないと使えない
  • UpdateでStartCoroutineを呼ぶと毎フレームごとに増える

StartCoroutineを使わない場合

下記のコードはStartCoroutineを使って書いた上記のコードと同義

IEnumerator enumerator;
void Start () {
    enumerator = Hoge();    
}   
void Update () {
    enumerator.MoveNext(); //yield return nullが書いてあるところまで処理を進める
}
IEnumerator Hoge(){
    Debug.Log("hoge");
    yield return null;
}

ただしMonoBehaviourを継承していない場合はyield return new WaitForSeconds( num );といった便利な関数が使えないため少々泥臭い方法が必要になる。

WaitForSecondsを使わない場合

//3秒処理を止める
for(float timer = 0; timer < 3.0f; timer += Time.deltaTime)
{
    yield return null;
}

補足

C#のforeachはMoveNext()やIEnumeratorで実装されている。

ykimisaki.hatenablog.jp

参考

コルーチンの使い方

cfm-art.sakura.ne.jp

qiita.com

Macの開発環境構築

今年だけで三回も開発環境を一から構築する機会があったので自分用にメモしてときます。随時更新します。 ※Mac OS Sierraです。

続きを読む

まだprintfデバッグで消耗してるの? ~gdb入門~

はじめに

この記事はみす 52nd Advent Calendar 2017の18日目の記事です。前回の記事はこちらです。

torino-k.hatenablog.com

今回はgdbというデバッガについて紹介しようと思います。

続きを読む

Unity開発で参考になりそうな情報源をまとめました

はじめに

この記事はみす 52nd Advent Calendar 2017の3日目の記事です。
前回の記事はこちらです。

momokunsan.hatenadiary.jp


初めはUnityの機能とかを紹介しようと思ったのですが最近あまりUnityを触っていないのと、ここで紹介するよりも公式や他のブログを参照した方が100倍分かりやすいと思ったので、この記事ではUnityを勉強する上で有用な情報源などをまとめてみました。以下に挙げたブログやサイトは自分が普段お世話になっているところだったり、Unityの勉強会などで教えて貰ったものです。もしかしたらUnityの開発経験が長い人だと「そんなもん全部知っとるわ!」ってなるかも知れないです。

続きを読む

コマンドラインでPDFにかかった鍵をサクッと外す

はじめに

鍵のかかったPDFは毎回パスワードを打つ必要がありとても面倒です。Chromeで開いて「ファイル」→「印刷」→ 「PDFとして保存」というやり方でも鍵を外せますが、どうせならコマンドでサクッとPDFの鍵を外せないかと思い調べたところPDFtkというものを使うとコマンドラインで鍵を外せるみたいなのでメモしておきます。

PDFtkの導入

せっかくなのでbrewで入れました。本家にいってダウンロードしてインストールするのももちろん可能です。

続きを読む

ドワンゴのサマーインターンシップに行ってきました

はじめに

4週間続いたドワンゴでのインターンを先日終えました。参加したのは「プロダクト開発インターン」の「niconicoコース」です。せっかくなので感想を書こうと思います。

自己紹介(2017年9月地点)

今年の2月ぐらいにエンジニアバイト(長期インターン)を始めたのでRails歴は7ヶ月ぐらいです。それまではUnityでゲームを作ったりとかしてました。業務の内容は主にViewの修正だったり、エラーを直したり、SQLをちょこっと書いてたりしてました。

続きを読む

Twitterクライアント開発 タイムラインの表示&ツイート機能の実装

先日、ずっと読み進めていたRailsチュートリアルを読み終えました。次は何をしようか考えていたところ、twitterというgemを使うと簡単にAPIを叩くことが出来るということを聞いたので、ずっと作りたいと思っていたオリジナルのtwitterクライアントを作ることにしました。とりあえず、タイムラインの表示、ツイート機能などは出来たので開発過程を記します。

Oauth認証

# gemfile
gem 'omniauth'
gem 'omniauth-twitter'
gem 'twitter'
gem 'settingslogic'
gem 'dotenv-rails', require: 'dotenv/rails-now'
gem 'honoka-rails'

上記のgemを入れてbundleインストールします。Railstwitterクライアントを作る上で上の3つは必須です。settingslogicは定数を一元管理、dotenvは環境変数を設定、honokaはいい感じにスタイルを当てるために入れました。

続きを読む

3Dアクションゲーム開発記

今回の内容は昔作った3Dアクションゲームの開発記です。先日1年ぶりにunityに触ったときに3Dの知識が吹っ飛んでいて苦労したので、またすぐに忘れないように開発の記録をさらっと自分用にまとめようと思います。

ちなみにそのゲームはこれです(宣伝)
https://unityroom.com/games/monster-island

以下の本を参考にしました

Unityゲーム開発 オンライン3Dアクションゲームの作り方

Unityゲーム開発 オンライン3Dアクションゲームの作り方

ゲーム内のキャラクターのモデルとかアニメーションとかサウンドなどは本を買ったときについてきたものを使用しました。基本的には参考書に沿ってゲームを作った上で少し改造しました。

続きを読む

Unity本を読んだのでまとめる

Unity本を買いました。なかなかの良本だったので自分用に大事だと思ったところをまとめます。

目次

  • 目次
  • 1. C#の文法
  • 2. Unityの基本的なこと
    • 回転
    • 大きさの変更
      • transform.Translate と transform.positionの違い
    • キー入力待ち
    • マウスポインタ
    • Rayについて
    • オブジェクトを動かす(力を加える)
    • 名前によるゲームオブジェクトの取得
    • 画面内にテキストを表示させる
    • オブジェクト指向
  • 終わりに
  • その他
    • デフォルトのエディタを変更する
    • Unityのコンソールを色付け
  • 参考文献
続きを読む

個人的なUnityはまりポイント

Unityをやってて自分がよくハマるところをまとめました。

シーンを遷移すると画面が暗くなる ver5.6

window→Lighting→Settings

f:id:kurome-stdio:20170504230449p:plain

Auto Generateのチェックを外して

f:id:kurome-stdio:20170504230630p:plain

Generate Lightingをクリック
※いじるのは遷移先のシーンのLightingの設定です。
何がムカつくってunityのversionが変わるたびにこのここらへんの名称とLightingの設定の場所が変わることなんですよね…。原因としてはautoだとシーンを遷移したときにライトが間に合わないから予め焚いておく必要があるみたいです(?)

続きを読む