【イベント】もちろんやります!unity1weekの投稿作品を全てプレイ!
ゲームを作り、愛する方々!あのイベントが到来しました...!
「...なんのイベント?」ですって...?
Unityroomの1週間ゲームジャムですよ!
「Unityroom?ナニソレ?」という方はコチラ
「1週間ゲームジャム?ナニソレ?」という方はコチラ
と、いうことで...
今回もモチロンやりますよ!!
(前回イベントとのバナー広告が一緒なのは内緒です...笑)
(※1)遅れて投稿されたゲームも放送期間内であれば含む
攻略の様子についてはYoutube上で生放送を行う予定です!
土・日:10:00~24:00(予定)
放送当日の放送開始前にYoutubeの放送URLをTwitterでお知らせします。
放送期間の間、お手数ですがTwitterのフォローをお願いします!
フォローはココをクリック
「自分のゲームが実際にプレイされているのを見たい!」
「他の人のアイディアを見たいけどプレイが面倒!」
「視聴者同士で意見をぶつけ合いたい!」 etc...
という方は是非、放送にお越しください!
私もコメントが盛り上がっている方がモチベーションも数倍以上になります!!なので、コメントもしてくださいね!笑
それでは、放送当日にお会いしましょう!ノシ
放送URLは確定ではありませんが以下のURLだと思います。
当日Tweetを見逃した際に利用してみてください。
https://www.youtube.com/watch?v=Sj0Piq4_4oY
タイトルが変なのは前回放送の名残です...多分。
【Unity】Color型をカラーコード(string型)に変換する
やりたいこと
Color color = new Color(1f, 0, 0); // 赤色 // これを "#FF0000" の文字列に変換したい!!
こうする
Color color = new Color(1f, 0, 0); // 赤色 string colorCode = ColorUtility.ToHtmlStringRGB(color); Debug.Log(colorCode); // FF0000
#
が必要な方は#
が付かないことに注意してください〜。
a値も欲しい...
透過情報であるa値も欲しい方はColorUtility.ToHtmlStringRGB
ではなくColorUtility.ToHtmlStringRGBA
を使うようにしましょう!
上で例として出したColor color = new Color(1f, 0, 0);
の場合だとFF0000FF
が返ってきます。
おわり
【Unity2018】マルチシーンを使うと"Your multi-scene setup may be improved by tending to the following issues"というエラーが出た
はじめに
おはこんばんにちは。ぱふです。
先日、重い腰を上げてUnityを2018にアップデートしました!
すると、こんなエラー(警告)が...
Your multi-scene setup may be improved by tending to the following issues:
Multiple scenes baked with Auto enabled can appear differently in Play mode when reloading them. Consider disabling Auto and rebaking.
放置しても動くんですが、なんか気持ち悪いので原因を調査...!
その結果解決したので、「誰かの役に立つかも?」と思い記事に直しておきます。
原因
調べてみるとLightingのエラーでした。
Lighting
の設定をAuto Generate
にしていると新しくシーンがロードされるたびにライトがベイクされるようで、「複数のシーンをロードすると、シーンごとに自動設定した光の当たり方と異なるかもしれないけど大丈夫か?」という警告のようです。
解決方法
Lighting
の設定をAuto Generate
から変更することで解決します。
シーンごとにGenerate Lighting
しましょう。
これで警告文は綺麗さっぱり消えてくれます!
ちなみに....一部だけしかGenerate Lighting
の設定をしないと
Your current multi-scene setup has inconsistent Lighting settings which may lead to different lighting when loading scenes individually or in a different order! Consider homogenizing the following:
1/2 scenes have Auto baking enabled.
というエラーが出ちゃうので注意してくださいね!
ん?2D?
「2Dってライトのベイクとか...あるっけ?」と思った方。
そうです。おそらく普通のゲームを作っている分には2Dでは影響はないと思います............多分!(自己責任で!笑)
おわり
【Unity】実行中の関数名の表示方法をちょっとだけプログラマーっぽくする
やりたいこと
Debug用に関数が実行された時に関数名を表示したいけど...
void HogeHogeHoge(){ Debug.Log("HogeHogeHoge"); // 処理 } void PiyoPiyoPiyo(){ Debug.Log("PiyoPiyoPiyo"); // 処理 }
と全ての関数にこんな感じで書くのはダサい!プログラマーっぽく書きたい!
こうする
using using System.Reflection; // 忘れずに!! void HogeHogeHoge(){ Debug.Log(MethodBase.GetCurrentMethod().Name); // 処理 } void PiyoPiyoPiyo(){ Debug.Log(MethodBase.GetCurrentMethod().Name); // 処理 }
ん?長くなってるじゃないかって?
...ま、まぁ、、タイプミスとか減るし良いよね?ね?ね?
(個人的にプログラマーっぽいし。笑)
おわり
【C#】エディタで「possible loss of fraction」の警告が出た時
possible loss of fractionの意味
取り敢えず、googleで翻訳してみましょう。
google『可能な分数の損失』
うーん...意味が分からない...。自分で訳すしかないですね。笑
......
......
『分数の損失が起こりうる』という意味かな。
原因
C#では割り算の際にint / int
はint
になります。(切り捨て)
10 / 4
という計算をすると2.25
ではなく2
になるわけです。
この計算をfloat
やdouble
の変数に代入したり、float
やdouble
を引数に取る関数に渡したりすると、possible loss of fraction
という警告が出るわけです。
解決方法
int / int
の割り算を故意的に行っている場合は問題ないと思います。
故意的でない場合は(float) int / int
のようにキャスト変換してあげれば問題ないと思います。
おわり
【C#】数値を表示する際に0で埋める方法
こういうことがしたい
63
と表示するのではなく063
のように指定した桁数まで0で埋めたい!
こうする
int speed = 63; string s = ""; // 方法1 s = String.Format("時速{0:D3}kmです", speed); // 方法2 s = String.Format("時速{0:000}kmです", speed); // 方法3 -C#6.0以上- s = $"時速{speed:D3}kmです"; // どの方法でもsは「時速063kmです」となる。
ちょっと解説
キモは{A:X}となっている部分です。
Aの部分はFormatでいつも指定している要素を表す番号です。
Xの部分でD3や000という風に0埋めの桁数を指定出来ます。
おわり
Twitterのフォロー歓迎です...(`・ω・´) ヨロシク!
眺めてコピペするだけ!Odin便利属性7選!
いきなりですが注意!
「Odin?何それ?」って思った方!
実はコレ、二部構成の後半記事です。
前半記事(きつねうどんさん担当)を読んでなくても大丈夫な構成になっていますが、『Odinとは?』について解説されているので是非読んでみてください〜!
はじめに
『Unity アセット真夏のアドベントカレンダー 2018』も本日が最終日! 皆さんも最終日なので読み疲れて来たんじゃないでしょうか?
なので...最終日はOdinの便利な属性たちを《Gif動画+サンプルコード》でお届け致します! 眺めて便利なものをコピペするだけ!最終日に相応しいラクさだと思いませんか?!
簡単に追加できるのに便利!というものを全属性から7つ選びました! Unityを扱う全員が使えるかどうかを第一に考えているので、是非ご覧下さい!
では、早速紹介していきますよー!
便利属性7連発!
その1:アタッチ間違いを回避だ!
「Prefabをアタッチしようとしたら、Scene上のオブジェクトをアタッチしてた!」 そんな方はコチラ↓↓↓
Asset Only Obj
は- Assetである
PrefabObject
はアタッチできる - Assetではない
SceneObject
がアタッチできない
- Assetである
Scene Only Obj
は- Scene上にある
SceneObject
はアタッチできる - Scene上にない
PrefabObject
はアタッチできない
- Scene上にある
サンプルコード
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [AssetsOnly] public GameObject AssetOnlyObj; [SceneObjectsOnly] public GameObject SceneOnlyObj; }
その2:アタッチし忘れを回避だ!
「Inspector上でアタッチし忘れてた!これがバグの原因の元に...」 そんな悲しい思いをしたことがある方はコチラ↓↓↓
何もアタッチされていないと、エラーが出ているのが確認できると思います!
サンプルコード
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [Required] public GameObject NeedObj; }
その3:試作でGUIのボタン作るの面倒だ!
「『ボタンが押されたら〇〇』の動作を確かめるのにSceneに仮のボタン配置は面倒!」 そんな方はコチラ↓↓↓
もちろん、ゲームを再生中にも有効なのでGUIのボタンなしでテスト可能です!
サンプルコード
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { public int Number; [Button] private void AddNumber() { Number++; } }
+α
[Button]
の配置の派生バージョンとして
・[InlineButton]
・[ButtonGroup]
・[EnumToggleButtons]
があるので、気になる方は使ってみてください。
その4:要素に見出しを付けるのだ!
「見出しをつけて、変数を見やすくしたい!」 そんな方はコチラ↓↓↓
サンプルコード
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [Title("Player")] public string PlayerName = "PAFU"; public int PlayerAge = 80; [Title("Enemy", "SubTitle", bold: false, horizontalLine: false, titleAlignment: TitleAlignments.Centered)] public string EnemyName = "MODOKI"; public int EnemyAge = 10; }
+α
追加で設定できる要素は以下の4種類です。
・SubTitle:サブタイトルを設定できます。
・bold:太さを設定できます。デフォルトはtrue
です。
・horizontalLine:水平線の有無を設定できます。デフォルトはtrue
です。
・titleAlignment:Titleの表示場所を設定します。
その5:要素の名前を分かりやすくするのだ!
「コードでStage Num
を定義したけど、Inspectorでは現在のステージ
と表示したい!」
という方はコチラ↓↓↓
サンプルコード
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [LabelText("現在のステージ")] public int StageNum; }
+α
「Inspector上の名前を動的に変更したい!」 そんな方に追加情報!
コードも置いておきます!
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [LabelText("$text")] public string text = "自由な変数名"; }
敵キャラが沢山いて、キャラの名前を動的に変更したい時に便利なのかも??
その6:ドロップダウンを使って値をセットするのだ!
「予め登録しておいた値をInspectorからセットしたい!」 という方はコチラ↓↓↓
GIF動画でも分かるように型によっては検索機能も付いています。
サンプルコード
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [ValueDropdown("speedArray")] public int Speed; private int[] speedArray = { 10, 20, 30 }; }
+α
応用として、値に名前を付けて設定しやすく出来ます! (コードは公式のやつ持って来ちゃいました。)
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [ValueDropdown("myVectorValues")] public Vector3 MyVector; // The selectable values for the dropdown, with custom names. private ValueDropdownList<Vector3> myVectorValues = new ValueDropdownList<Vector3>() { {"Forward", Vector3.forward }, {"Back", Vector3.back }, {"Up", Vector3.up }, {"Down", Vector3.down }, {"Right", Vector3.right }, {"Left", Vector3.left }, }; }
↑のようにコードを書けば... ↓のように設定できます...!
その7:インフォメーションを表示したい
「Inspector上にもメモを残したい!」 という方はコチラ↓↓↓
ちなみに[InfoBox("お知らせ", InfoMessageType.XXX)]
と書くことで、枠内のアイコンが変更できます。
上から
・InfoMessageType.None
・InfoMessageType.Info
(デフォルト)
・InfoMessageType.Warning
・InfoMessageType.Error
に設定したものです。
サンプルコード
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { [InfoBox("ここにお知らせが書けるよ!")] public int Num; }
+α
インフォメーションを出すかどうかをbool値で管理出来ます。
using UnityEngine; using Sirenix.OdinInspector; public class OdinSample : MonoBehaviour { public bool IsDisplay; [InfoBox("ココに情報を書けるよ!", "IsDisplay")] public int Num; }
↑のようにコードを書けば... ↓のようにインフォメーションを表示or非表示に出来ます...!
おわり
バババッ!と7つ紹介しました!気になる使い方はあったでしょうか? Odinを持っているかに関わらず参考になった箇所があれば嬉しく思います!
大トリですが、締めもなくサッと終わりますよ!
執筆者の方々&読者の方々お疲れ様でしたー!!!