Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

Unityを触る前に。アプリを作ろう!【RGBスライダー】

何か簡単なものを自分で考えて、作るのがプログラミング上達の一歩!!というわけで以前に作ってみた、簡単なアプリを今の自分がレビューしていきます!

 

自分で考えて作る、ということ

 今回はUnityの前にプログラミングの習得に専念していた時に作った、ほんとにちょっとしたアプリについてです。

 

 プログラミングにおいては、とりあえず自分の好きなものを作ってみればいいと思うよ、という謎アドヴァイスがあって困惑していたのですが、文法がなんとなくわかりかけ始めた頃、とりあえず何か作ってみようと思い立ちました。確かに自分で何かしら作ってみないことには始まらないんですよね。

 

 そこで思いついたのが昔のファイナル・ファンタジーなどにあったウィンドウの色を変えられる機能でした。まぁ何かしらゲームに絡めたほうがいいだろうとのことだったんですが。

 

アプリの概要

 RGBというのは三原色である、赤緑青をそれぞれ0から255までの数値として、それらの値を組みあわせることでいろいろな色を作る方式なわけですが、このアプリは単純です。

 とにかく3つのスライダーがあって、それを動かすとそれに応じてウィンドウの色が変わるというものです。たったそれだけのものです。

 

 操作にリアルタイムでレスポンスがあるものをつくって見たかったので、そういう意味でもちょうど良いものでした。

 

 ちなみに、これはもともとはWPFで作ったアプリですが、WPFはいろいろ説明がややこしいのでWindows  Formアプリで作り直しました。

(というかWPFってどうなんすかね?WinFormで簡単に出来ることがややこしくなってるんですが!!(怒り))

 

このアプリに必要なものは、 

・RGBの各々の値を格納する3つの変数。
・数値を変える操作用のスライドバー(Track Bar)
・そのRGBの値の変化に応じてウィンドウの色を変える関数、method
・各RGB値を表示する機能。(オプション)

 基本的にはこれだけです。オプションのRGB値表示機能はあくまでオマケですが、あるとその色のRGB値が具体的にわかるというものなので、あった方がアプリの価値が上がるかなと。

 

まずは完成品を見てみましょう! 

f:id:miur-us:20161119025626p:plain

ほんとにシンプルすぎるアプリです。でもアプリはアプリですから!   

  

f:id:miur-us:20161119025706p:plain

 スライダーを動かすとその値に応じて、

色がダイナミックに変化していきます。

 

 

 

 

 f:id:miur-us:20161119025718p:plain

 f:id:miur-us:20161119025735p:plainいろんな色に変化させることが出来ます。

 

 

 

 

 

アプリのコードについて

というわけでコードも確認していきます。 

f:id:miur-us:20161119033258p:plain

f:id:miur-us:20161119033305p:plain

これだけです。

Form1はアプリのフォーム本体ですね、そのクラスに

Rval, Gval, Bval

 と3つの変数をフィールド(クラスに直に置かれた変数、スコープはクラス全体)として宣言します。こうすることでコントロールであるスライダーと、色を反映させるmethodをまたがせることが出来ます。 

 

 そんで肝心な色を反映させるmethodはWindowColorSet()としました。ウィンドウのカラーはBackColorで設定できるので、そこにRGB値から色をつくれるColor.FromArgb()というmethodを使うことで各RGB値の現在の値をぶち込みます!

 

そして最後は各スライダーの動作についてです。順序はこうなります。

(スライダーは最小値を0、最大値を255として設定しています。)

 

・スライダーを動かす毎にリアルタイムに反映させるので_Scrollイベント関数を使う。

 これによって以下の動作がスライダーを動かすたびに発生する。

・スライダーの値を各変数に代入する。

・その値をToString()関数を使い文字に変換、ラべルTextに代入し表示させる。

・WindowColorSet関数を起動させ、即座に色の変化を反映させる。

  

というものです。単純なんですけど始めて自力で作れたときはうれしかったですね。

  

こんな感じ、習作アプリの記事をかいて復習していこうかと思います。