2015年3月30日月曜日

【Chef】NoMethodError undefined method `[]' for nil:NilClass

ChefでRuby環境作るときに起きたエラーの対応メモ

まとめ


  • Chefでknife solo cookしたときに下記エラーが出た
  • NoMethodError undefined method `[]' for nil:NilClass
  • 原因は未定義のattributeを呼び出してたからだった(typo)

エラー内容

================================================================================
Recipe Compile Error in /home/vagrant/chef-solo/cookbooks-3/ruby-env/recipes/default.rb
================================================================================

NoMethodError
-------------
undefined method `[]' for nil:NilClass

Cookbook Trace:
---------------
  /home/vagrant/chef-solo/cookbooks-3/ruby-env/recipes/default.rb:24:in `block in from_file'
  /home/vagrant/chef-solo/cookbooks-3/ruby-env/recipes/default.rb:23:in `from_file'

Relevant File Content:
----------------------
/home/vagrant/chef-solo/cookbooks-3/ruby-env/recipes/default.rb:

 17:    mode 0644
 18:    owner node['ruby-env']['user']
 19:    group node['ruby-env']['group']
 20:    not_if "grep rbenv ~/.bash_profile", :environment => { :'HOME' => "/home/#{node['ruby-env']['user']}"}
 21:  end
 22:  
 23:  directory "/home/#{node['ruby-env']['user']}/.rbenv/plugins" do
 24>>   owner node['rbenv-env']['user']
 25:    group node['rbenv-env']['group']
 26:    mode 0755
 27:    action :create
 28:  end
 29:  
 30:  git "/home/#{node['ruby-env']['user']}/.rbenv/plugins/ruby-build" do
 31:    repository node['ruby-env']['ruby-build_url']
 32:    action :sync
 33:    user node['ruby-env']['user']

原因

attributes/default.rtを下記のように書いてたんだけど
default['ruby-env']['user'] = "vagrant"
default['ruby-env']['group'] = "vagrant"
default['ruby-env']['version'] = "2.1.1"
default['ruby-env']['rbenv_url'] = "https://github.com/sstephenson/rbenv"
default['ruby-env']['ruby-build_url'] = "https://github.com/sstephenson/ruby-build"

呼び出し箇所はこうなってた
owner node['rbenv-env']['user']
group node['rbenv-env']['group']

対応

呼び出し部分を正しく書き換えて('ruby-env'に)完了


そりゃエラーするわなって感じだけどもう少しわかりやすいエラーメッセージだと助かるな〜。
typoに気づけず5分悩んだ。

2015年3月12日木曜日

MSBuildをコマンドで呼ぶとエラーする。 MSB4019 Microsoft.WebApplication.targets が見つかりませんでした

JenkinsでMSBUILD呼んだらこんなエラーでた。
error MSB4019: インポートされたプロジェクト 
"C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0
\WebApplications\Microsoft.WebApplication.targets" が見つかりませんでした。
 <Import> 宣言のパスが正しいかどうか、
 およびファイルがディスクに存在しているかどうかを確認してください。

VS開いてビルドは通るのに下記コマンドで実行するとエラーするんだよなぁ。。
MSBuild hogehoge.csproj /p:Configuration=Release /t:Rebuild

エラーに出てるパスを見てみると怪しいとこ発見。
//↓ある
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications

//↓ない
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications
v12からv10へWebApplicationsフォルダをコピーしたら動いた。

2015年3月4日水曜日

Unity5リリース!無料版でゲームエンジンの全ての機能が利用可能に!

おっさんドヤ顔
プレスリリース:UNITY、ゲームエンジンUNITYの最新バージョン UNITY 5を公開

Unity5、ついにリリースされましたね!

Unity4のときはProでしか使えなかった機能のほとんどがFree版でも使えるようになったようです。数百ドル分のアセットを買わないとできなかったことが全て無料でできるようになったと考えるととてもありがたいですね!

物理ベースシェーディングやレンダーテクスチャ、プロファイラにポストプロセスエフェクト、、、全てPersonal(無料版)で制限なく使えます。アセットバンドルも試してみよう。あと個人的に2Dのスプライトパッカーが使えるようになったのが嬉しい!

Proの機能がほぼ全て無料版におりて来ちゃった感じです。


間違った事書いてるかもなので詳細は下記リンクから直接確認お願いしますー。

UnityPersonal(無料版)とProfessionalの違い

http://unity3d.com/jp/get-unity

Unity 5エンジンの概要(Personalでも全て利用可能)

http://unity3d.com/jp/unity/engine-features


Android / iOS / その他のプラットフォーム

気になるAndroid / iOSへの書き出しですが、前年度に$100,000以上の売り上げが無い場合は無料版で制限無く書き出せるようです。(Unityロゴのスプラッシュスクリーンが表示されます)

Android/iOS Proが存在するのはあくまでも前年度$100,000以上売り上げたパブリッシャーが購入必須になるだけみたいですね。すばらしい。

すでにUnity5Pro買っちゃったんだけど…って人は?

すでにUnity5プレオーダーをした方で、Unity5 Personal版を利用したい方は条件さえ満たせば払い戻しを受ける事ができるようです。
詳しくは下記FAQを確認ください。

http://unity3d.com/jp/unity/faq


Unity仮面からのありがたい一言



Unity5を使っておもいっきりゲーム開発を楽しみましょう!


他のUnity関連記事もぜひご覧ください。
Unity系記事まとめ

2015年3月1日日曜日

【Unity】とっても簡単に扱えるBGM再生クラスを作ってみた。フェードイン、フェードアウト対応版

こちらの記事(【Unity】AudioManagerクラスを作ろう)の改良版です。

上記記事ではBGMの再生はできましたが、BGM切り替えがスムーズではありませんでした。また、オーディオファイルをインスペクタ上から一つ一つセットしなければいけないなど、いろいろと不満が残っていました。

それらを解消すべく作り直してみたので紹介します。

ダウンロード

UnityPackage

手っ取り早く使いたい方はこちら。
https://github.com/naichilab/Unity-BgmManager/archive/master.zip

ソースコード

GitHubで公開してます
https://github.com/naichilab/Unity-BgmManager

これ以降は使い方の説明とかです。

やりたいこと

  • BGMを再生できること。
  • とにかく簡単に扱えること。
  • BGMのフェードイン、フェードアウトに対応すること。
    • フェードインとは:音量0からゆっくり大きくなっていくこと
    • フェードアウトとは:音量がゆっくり小さくなっていくこと
  • BGMのクロスフェードに対応すること。
    • クロスフェードとは:フェードアウトとフェードインを組み合わせてBGM切り替えを行うこと
  • フェード時間とかを調整できること。
意識したのはこれくらい。
とりあえずBGMだけです。
SEについてもそのうち作ろう。

サンプル


Hosted by UnityRoom.com
PlayボタンでBGM再生開始。
他のBGMへ切り替える際、少し重なって聞こえると思います。これがクロスフェード。
(Playを押してから音が出るまでにちょっと時間があるので分かりづらいかな?)

使い方

Unityプロジェクトを開く

新規Projectでも既存のProjectでもなんでもOK

BgmManagerのダウンロード

https://github.com/naichilab/Unity-BgmManager
こちらのURLにある”Download ZIP”ボタンからダウンロード


BgmManagerのインポート

ZIPファイルを解凍して出てくる
BgmManager.unitypackageをダブルクリックしてUnityに取り込む
サンプル不要ならチェックを外してください。
※サンプルに同梱したmp3ファイルはSHW様(http://shw.in/)提供のものです。

サンプルの実行

SampleフォルダにあるSampleシーンを開きます。
HierarchyビューにBgmManagerが配置されていれば準備完了です。
実行してBGMを再生できる事を確認してください。

サンプルを実行するだけならこれで終わり。これ以降は各自用意されたBGMファイルを再生する方法と、スクリプトからの呼び出し方法の解説です。

BGMファイルの追加

BGMファイルは下記フォルダに存在するものが自動的に読み込まれます。
・Resources
 ┗Audio
  ┗BGM
(Resourcesフォルダはどの階層にあっても大丈夫です。)

フェードパラメータの調整

BgmManagerにはいくつかのパラメータがあります。

  • Debug Mode
    • ONにするとサンプル実行と同じように簡易ウィンドウが表示されます。
  • Target Volume
    • フェードイン完了時の音量です。
  • Time to Fade
    • フェードイン(アウト)の開始〜完了までの時間です。
  • Crossfade Ratio
    • クロスフェードの重なり率を指定します。
      • 0を指定した場合、フェードアウト完了を待ち、フェードインが開始されます。
      • 1を指定した場合、フェードアウトとフェードインが同時に開始されます。

スクリプトからの再生・停止

すきなスクリプトから下記1行でBGMを再生できます。
BgmManager.Instance.Play ("BGMファイル名");
すでに別の曲が再生中の場合は、勝手にクロスフェード再生します。

停止する場合は下記いずれかを呼び出します。
//フェードアウト後、停止います。
BgmManager.Instance.Stop ();
//ただちに再生を停止します。
BgmManager.Instance.StopImmediately ();


スクリプトからパラメータの変更

こんな感じ。
BgmManager.Instance.DebugMode = false;
BgmManager.Instance.TargetVolume = 0.8f;
BgmManager.Instance.TimeToFade = 3.0f;
BgmManager.Instance.CrossFadeRatio = 0.5f;
再生・停止と一緒ですね。

参考サイト



サンプルファイル提供


その他

フェードイン(アウト)は直線的な補間しかしてないですし、インアウトをそれぞれ別の長さにすることもできないです。
まぁとにかく簡単に使える物を目指したので今後も実装する事は無いかな…

是非使ってみてください〜。



Unity系記事まとめ
Related Posts Plugin for WordPress, Blogger...