2 / 7ページ

Unity Canvas Scalerについて

個人的な設定

そういえば、Unity最初に触った時に、特に何も考えていなくて痛い目を見たのが、CanvasScalerでした。

私の場合は今のところAndroid端末した開発していませんが、ご参考までと、私の設定を記事にします。

今は流れるかのようにこの設定をしてしまうのですが、久しぶりに開いてあ、そういえばと思ったので。

Scale With Screen Sizeで固定

初期で開くと、この状態。

・Unityマニュアル:Constant Pixel Size
・リンク:https://docs.unity3d.com/ja/540/Manual/script-CanvasScaler.html

マニュアルによれば、「UI 要素をスクリーンサイズによらずピクセル単位で同様のサイズに保ちます。」となっています。

なるほど、わからん。

ちょっと記憶が曖昧ですが、これを設定して実機テストをした時に、UIがはみ出る、切れるなどがありました。

画面サイズに合わせて、UIの要素を替える必要があるということかしら、となって「Scale With Screen Size」にしたところ、これがビンゴ。

で、Reference Resolutionとは、「スプライトがこの ‘Pixels Per Unit’ 設定を有していれば、スプライトの 1 ピクセルは UI 内での 1 ユニットをカバーします。」となっています。

なるほど、わからん。

私の認識なので、あくまで参考。

このキャンバスの画像度を設定しているようなものだと思っています。作ろうとしているのは、Android端末のアスペクト比  16:10のもの。ということで、画像度は1920×1200に設定。

で、今、MatchをHeightにしているのですが、高さに合わせて調整して欲しいから。(横に合わせたかったら、Width)

上で一個ボタンを配置していたので、MatchをWidth⇄Heightして見ましょう。

という状態になります。

Canvas Scalerは初期で設定しておかないと大変

私は基本的に以下のように設定します。

・UI Scale Mode : Scale With Screen Size
・Constant Pixel Size : Reference Pixels Per Unit
・Reference Resolution :
アスペクト比が10:16 → 1200 x 1920
アスペクト比が16:10 → 1920 x 1200
・Match :
アスペクト比が10:16 → Width
アスペクト比が16:10 → Heigth

画像度は、高ければ画像もそれなりの画像度を揃えないといけないということです。ま、スマホでみる分はわからないとは思いますけどね。

これが、初期で設定を忘れてUI配置終わってから気づいたとしましょう。

惨事です。

設定変えて全てのUIが移動するのが見えますよ。まだ地道に修正してやらないといけないんで、シーン作成時に必ず初期で済ましています。

Android端末のバックボタンでアプリを終了する。

iOSとは関係のないお話

Android端末の「戻る(Back)」ボタンでアプリを終了させるのは、多分普通のお話。

しかし、私が作っていた3つのアプリは、どれも終了してくれません。

何故なら、実装していないから

何故実装していないかというと!テストしていないから!わからなかったの!!

先日何も考えず自分のアプリつけてバッグボタンで終了させようとしたら、終了したしない!私のお古いiPhoneさんは、戻るで終了してくれました。

ということで、ググる。

以下の記事を発見。

・記事:UnityでのAndroidバックボタン対応
・リンク:https://qiita.com/WassyPG/items/12030494688cba02ce1b

そうか!対応が必要だ!

実機じゃないとわからん

ということで、めちゃめちゃ簡単かつわかりやすく説明いただいているので、ここではソースは割愛。

リンクかけていますので、元記事よりご確認願います。

で、やってみよう。

※Unity 2017.3 of 3で実施

あ、スクリプト名「buootn」なってる。ま、いいか。

とにかく、打ち込んで見たら、ランタイムプラットフォーム判定用のあれが出ますね。なるほどねー。

	if (Input.GetKeyDown (KeyCode.Escape)) {
		Application.Quit ();
		return;
	}

とにかくAndroidプラットフォームの判定を消して(テストしたいんで)稼働させてみる。

※静止画じゃないです。Gifです。
※Macで「Esc」押しています。

これはつまり、実機じゃないとわからんと。

うむ。そうね。テスト保留。これだけのために実機繋ぐにはちょっと設定面倒臭すぎる!

そしてこうやってバグを仕込むのでしょう。

テストは大事けどね。流石に無駄たと思うのです。

実際に実機テストするレベルでやって見ますか。

パッケージ一覧を作成した

一つ作っておけば、別のアプリでもただインポートするだけで使えるようにしたい。ということで一覧を作成しましたの。

有難やGoogleさま。

というか、どんどんお仕事やっているように見えて悲しい。

Google様さま

スプレッドシート偉大過ぎ

ある程度作りたいゲームを固めたので、画面一覧概要を作ってみました。

Google本当、すごすぎ。このクラウド5Gまで無料。個人なので、余裕。素敵。

なんでしょう。数年におよぶ社畜生活のせいか、ここまでやっておけば、なんか進めそうな気がしますね。

やっぱ、きっちきちに締め付けないといけないのかしら。飽きるとやべーって思ったんですけど、飽きないうちに全部決めておいて、飽きててもとりあえずやれば(完全作業だけど)できる形のほうが向いているかもしれません。

で、極力横にそれるような機能をそぎ落としたんですが、それでもシーン分けするだけで、ざっと10を超えました。

おーっと。うむ。あと5か月。頑張る。

絵とかもろもろそろえると考えると、製造だけで純粋にかけられるのは、正直3か月かな?(笑)

お友たちにヘルプは要請するつもりですけどね!

あとは、パッケージ化して合体していく感じで。

明日が会社という地獄が待っておりますので、いやーもう。本当。宝くじあたらない・・・。

新年の目標(という見直し)

5秒の法則

日本では翻訳発売されていないんですが、メル・ロビンスさんの「5秒の法則(ルール)」という本をご存知でしょうか。

※ブロガーさんのまとめ見つけた:
「やる気は5秒で死んでしまう」 行動のブレーキを外すための”自分ルール”のつくりかた

あんまり、この手のビジネス参考書みたいなものは好きじゃないのですが、初めてこれは!と思いました。

要は、「やらないといけないことがわかっているのに、面倒臭く、言い訳を考えていようとしているとき、5、4、3、2、1とカウントダウンを行いとりあえず体を動かす」。

人によって違うと思うのですが、私には有効でした。

・・・どうだろう、秒単位でスケジュールで締め付けられている日本人は向いてるのでは(泣)

目標の見直し(という言い訳)

今まで作っていたものは、飽きると思って「こういうものが作りたいな」と思って、作り始めたものでした。

難しくないし、できるものだと、今も思っているのですがおそらく1年は必要になるのかと。風呂敷を広げすぎて、やらなければいけないものが多すぎました。

というのを年末計算してみた(笑)。

5月で公開できるものにチェインジ。

①機能ごとにパッケージ化して、後で別のアプリに使えるようにする

→部分部分でパッケージ化することができることを知ったのが、つい先先月。

パッケージ化するものも洗い出す。

②風呂敷は広げすぎない。

③ゲーム性は極めて単純に。パズルゲームレベルで。

④人物絵以外は、極力、著作権フリーの素材で賄う。

結構細かいところまで詰めてから、アプリの製作に入ろうと思っています。前回の失敗は、飽きるを想定してだらだらやったのもあった。

今回は割とスケジュール真っ当に組んでやってみようかと。

・・・社畜の成分が消えない。

そして社会人辛い。

来週月曜日までには、どんなアプリにするかガッチガチに決めておきます。

意外によくかけた

特にブログに書くほどの成果はない。

とりあえず、パソコンをつけて、画面を開いてちょっとだけ、ほんのちょっとだけ進ませた。

今週は週末土日ともに予定があるので、来週目処でプログラム終わらせるためなら、平日ある程度進めておかないといけない。

時間経過でパラメーター進ませるところは、この前この前やってみておいたので、組み込めば良いのだけど・・・。

以外に綺麗に作ったので、ちょっとめんどいけどやればできる状態。

うーん。面倒臭いが優っている・・・。

 

Unity2017.2をインストール

求めていたのは、2017.3だったようだ

いつも(ひっそり)とお世話になっている、椿さんのツイッターでみたこれ。

とりあえずある程度の形ができるまで以前のUnity5でいようと思ったのだけど、これは、Unity2017に今すぐせねばと思い・・・。

私がダウンロードした(最新版)は、v2だった。

ベータ版が3なのかな?

私はベータ版とか、テスト版とかあんまり確認しないので、他の方のツイッターはブログを漁るだけなのですが。

この機能がものすごく欲しかったようで、ちゃんと読まずにダウンロードしてしまった・・・。ま、いいか。

ちょっとだけ触ってみた感じだと、今のところそこまで前と変わったのはわからん。私が違いがわかるほど

進捗は、一歩も進んでいない

きてしまった。飽きが。

これはまずいですよー。何事も終わらせることが難しい理由って、飽きですね。私の場合は。

そして、ひたすらプログラミングすることに飽きてしましました。それも1ヶ月前のお話ですわ。まずいまずい。

なので、キリの良いところで、見栄えを整えに回ろうと思います。

12月公開予定だったのだけど、まる2ヶ月は遊んだので、2月公開(笑)。

来週目標で一旦プログラミング終わり。

そこからできるもんだけ、デザインに移行。ちょっと形が見えたらきっとやる気も出るでしょう。多分。

自分のために、毎日ブログを始めますわ。なんでもいいからとにかく気づいたことはあげる!パソコンもつけるようになるでしょう。

快適な作業環境でお外出れない

全て整った

まだ、Windows端末バリバリ使うには早いけど、全て整えました。

素敵。完璧。

真ん中にある子が、今回購入しました、Dellのパソコンです。

本当は、買う時かなり心配していました。Macが一体型でものすごく静かで、軽く、動きも軽やかですが・・・。

7年前に買ったという先輩の一体型デスクトップがものすごくうるさく、スリープ中すら起動音をあげる恐ろしい子で、よく止まるわ、固まるわですごぶるイメージ悪かった。

確か、Ne●製。私の中では、富●通とNe●の評価はものすごく低いので、期待もしていなかったのですけれど。

この買い物は、正解でした。

前の端末もDellさんのでしたが、その時はグラフィックカードなども当時の一番良いものにしたりしていたんですけど、Macを一緒に使うことで、カスタマイズして買う必要は、あまり感じなくなりましたね。

・起動音:Macに比べると、少しだけする。でもエアコンの音の方が大きく聞こえるレベル。全く気にならない。

・動き:割と快適。インストールした、複数のシステムをそれぞれ稼働させても固まることはない。

・重さ:一般的なモニターよりはかなり重い。単体型デスクトップと同じくらいの重さ。一体型だからMacみたいに持って別の部屋に行って作業できると思ったけど。無理(できるとは思うけど)

心配していたのはそれくらいでしたが、予想より良い。重さだけは、想定外だったけど仕方ない。

Macのマウスはマウスパットなしだとちょっとぎこちない動きをするのですが、このおもちゃみたいな白いマウスはスイスイ動いてくれて助かっています。

見た目がおもちゃっぽいし、持つ手の感覚もおもちゃぽい。キーボードも。私は好きですね。なんか、キーボードもしっかりボタン推してる気分になるんです(笑)。

さて、会社1週間通って、ちょっとは体もなれたことだし、明日からは本格的に作っていきます。

今日は、遊ぶの。

 

社会人つらぁ

気づいたら9月も10日すぎている

まずい。9月入ってからUnity全く進めていない気がする。

9月中にシステム終わらせて、あとは3ヶ月(10から12まで)かけてデザインで必要なもの揃えようとしたのに!

と行っても、この前パラメーターあげるのも成功したので、ま、大丈夫かなと。

入社したばかりなので、少なくとも3年は働くと思いますよ。今すぐやめたいけど。仕事が面白くない面白いに関係なくね。

サラリーマン・・・。安泰だけどねー。

そうねー。できればゲームだけ作って生きていきたいですね・・・。

今の仕事は、前の仕事とはエンジニア部類だということし共通点ないです。思ったより前の会社の癖(癖づけられた習慣)が残っていて戸惑うことがまだいっぱい。

先輩:このデータベースの設計してファイル作っといて
私:わかりました。設計書は?
先輩:え?
私:え?

みたいな。Accessで作るから、とりあえずテーブル作っとけばよいって感じです。前の会社だと、全てがホストで行われるので、テーブル作るまでリーダー承認、係長承認、課長承認、他課(DB管理部門)承認行くと早くて2ヶ月はかかりましたわ。

設計書なども作らなくても良いし、テーブル作ってさっさと動かしてさっさとなおせるって新世界。やることは(できることも)ないのでほぼ暇してますが楽です。

めっちゃ忙しいよって言われたんだけど、私が知っている忙しさではないので大丈夫〜。

 

新しいWindow端末

購入して3週間くらい。月曜日配送予定確認した時は「配送手配中」で、9月25日着となっていたから、割と絶望していましたが、届きましたよ!

Macがあまりにも楽だったので、モニタ一体型にした!昔みたいに一体型はゴミじゃないはず!

 

 

Macより5kgは重い気がするので、気軽には動かせない気がする!

Macすげーな!

時間経過でのパラメーター加算2

解決した

DeltaTimeを用いて、1秒を加算していき、数秒で一回ごとにパラメーターを変えて行くやつ。

家族で外食に行っていた時に、急に思いつきました。

そうか。「=」じゃないんや。バカですねー。参考にした所にも書いていましたよね「>=」って。

そうね。そうだよねー。もう本当に嫌。こういうしょうもないことに引っかかって

時間経過でのパラメーター加算

直して結果物はこれ。

1個目のパラメーターが順調に加算していきます。

解決したー。前回から直した所は、一箇所だけ。「=」が「>=」。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PrmControl : MonoBehaviour {

	//時間表示用
	public Text TimeT;
	private bool TimeF;

	//3x5 = 15で時間制御
	private float timeN;
	private float timeC = 15f;

	//パラメーター用
	public Slider S1;
	public Text S1t;
	private int numS1;
	private float S1f = 2f;
	private float S1n = 0;

	public Slider S2;
	public Text S2t;
	private int numS2;
	private float S2f = 3f;
	private float S2n = 0;

	public Slider S3;
	public Text S3t;
	private int numS3;
	private float S3f = 5f;
	private float S3n = 0;

	// Use this for initialization
	void Start () {
		//時間制御
		TimeF = false;
		timeN = 0;

		//初期化
		S1n = 0;
		S2n = 0;
		S3n = 0;

		//パラメーター表示
		numS1 = 2;
		numS2 = 5;
		numS3 = 9;

		S1.value = numS1;
		S1t.text = numS1.ToString ();

		S2.value = numS2;
		S2t.text = numS2.ToString ();

		S3.value = numS3;
		S3t.text = numS3.ToString ();
	}
	
	// Update is called once per frame
	void Update () {
		
		if (TimeF == true && timeN <= timeC ) {
			TimeT.text = timeN.ToString ("00");

			if (S1n >= S1f) {
				numS1 = numS1 + 1;
				S1.value = numS1;
				S1t.text = numS1.ToString ();
				S1n = 0;
			} else {
				Debug.Log (S1n);
				Debug.Log (S1f);
				S1n += Time.deltaTime;
			}

			timeN += Time.deltaTime;
		}

		//初期化
		if (timeN == timeC) {
			timeN = 0;
			TimeF = false;
		}
	}

	public void PushButton(){
		TimeF = true;
	}
}

 

時間経過でのパラメーター加算

思った以上にうまくいかない

今の私の心が、9月1日からの社会人復帰に向けて残る8月を全力で遊びたいって叫んでいるからかもしれない。

最初は、普通に会社に行く前まで根本となるシステムを作っておいてから、12月の公開に向けて二足の草鞋が履ける状態になりたいな〜という夢をみていたのですが・・・。

割と最後の週、休みなく予定が入るの、全力でだらだらしたいの、風邪引きの・・・。

とりあえず、1週間のスケジュールを1日3秒の時間で進ませ、パラメーターをあげたり下げたりするところを作りたい。

割と、ここに詰まっています。

deltatimeを使うので対応する予定。

※参考サイト
[Unity] 一定の時間間隔で処理を実行する方法まとめ(時間制御)

ただ、予想と違う動きになる・・・。

確認してみよう

今作っているゲームで試すにはパラメーターが多すぎるので、パラメーター部分だけを取り出してみました。

15秒で三つのパラメータに変化を与えたい。

で、うまくいかない。

	void Update () {
		
		if (TimeF == true && timeN <= timeC ) {
			TimeT.text = timeN.ToString ("00");

			if (S1n == S1f) {
				numS1 = numS1 + 1;
				S1n = 0;
			} else {
				Debug.Log (S1n);
				Debug.Log (S1f);
				S1n += Time.deltaTime;
			}

			timeN += Time.deltaTime;
		}

		//初期化
		if (timeN == timeC) {
			timeN = 0;
			TimeF = false;
		}
	}

S1nは1秒ごとに1プラスされます。
S1fはフラグ。2が格納されています。 float型です。

2秒でPrm1の数値が1上がるはずだった。

の予定でした。

結果はこれ。

時間だけがすぎる・・・。パラメーターは変わらない。

Logを入れてみたら、こういう結果に。

比較対象のS1f = 2のままだが、S1n = 2ジャストになることがないため、if文の条件に該当しない。

詰まった・・・。

今日のお仕事はおしまい。また明日・・・。

2 / 7ページ

© Copyright 2017 「It Happens」 All rights reserved.