「授業用」カテゴリーアーカイブ

Unity GUI(4)ランダム値の確認

こんどは,さきほどの

		int cat = Random .Range(0, 2);
		Debug.Log (cat);

void Update(){   }

の間に移動させ(void Start(){  }の間から出して),再生してConsoleを確認しましょう.

4

こうなります.

Update中の{}に書かれたものは,ゲーム再生中ひたすら繰り返されます.

 

UNITY GUI(3) 空のオブジェクトを作成する

それでは,Unityに戻り

メニューバーの Gameobject>Create Empty を選択します

HierarchyにGameObjectが作成されます.これを分かりやすい名前に変えてもいいですが,面倒なので,そのままでいいです.

先ほど作ったmyscriptをこの作成されたGameObjectの上へドラッグ&ドロップします

このスクリプトがGameObjectへアサインされました.

再生ボタンをクリックします.

コンソールを確認すると,そこには0か1が表示されています.3

 

Unity GUI(2)ランダム値

ランダム値を発生させてみましょう

	// Use this for initialization
	void Start () {
	}

このvoid Start()に囲まれた中を最初の1回実行します.最初の1回のタイミングは,UnityのPlayボタンを押した時の1回です.

この と  の間に

		int cat = Random .Range(0, 2);
		Debug.Log (cat);

と入れてください.

int整数の変数を作ろう!(えさ箱)

cat は整数をいれておくための変数の名前(えさ箱の名前的な)

Radndom乱数発生

.Ramge範囲指定

(0, 2)範囲は0から2の間

の意味です.

Debug.Log(cat); はcatの変数の中身をコンソールに表示せよというものです.

これを記入して,保存します.

 

Unity GUI(1)準備

Unityのボタンやアイコンなど,GUIと呼ばれるパーツを作成してみましょう

なお,検索語は ugui (unity guiの意味)がいいです.

以前あったアセットに,NGUIというものがあり,それと混同されることがたまにあるので注意ください.

 

  1. Unityを起動します
  2. Asstesウィンドウ上で右クリックして create > c# script を選ぶ1
  3. ファイル名を変えられる状態になるので2myscript と入力
  4. もしも名前を変更前に確定してしまった場合は,後で修正します
  5. 作成したスクリプトをダブルクリックして開く.コードエディタが開きます.
  6. 最初の2行の
using UnityEngine;
using System.Collections;

後に

using UnityEngine.UI;

を追加します.

これはUIシステムを使えるようにするためです.UIを使わない場合は不要です.

冒頭の3行はこうなりましたか?

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

 

Graph Makerのseriesのパラメータ(Radar Graph)

radar graphのパラメータ例

		// データを座標に変換。
		List<Vector2> pointVector = graph.GenRadar(graData[0], graph.offset.x, graph.offset.y, graph.degreeOffset);
		series1.pointValues.SetList(pointVector); 
		series1.hidePoints = false;              // 点を表示
		series1.pointWidthHeight = 20f;//点の大きさ
		series1.connectFirstToLast = true;      // 最後と最初の点をつなぐ
		series1.lineColor = new Color(0F, 0F, 1F, 0.5f);// 線の色 Blue
		series1.lineScale = 4f;//線幅

areda.shadingは使えない,,

 

Unity入門-15

条件分岐に応じてリザルトを変更する

 

復習

  • シーン遷移のスクリプトはどこ?
  • シーン遷移するためには,build setupにシーンを入れておく
  • invokeは「ちょいまち」のこと

条件分岐

  • 経由地を全て取得=endシーンへ(現在の設定)
  • タイムアップ=新たに作成するタイムアップシーンへ

概要

  1. endを複製し名前と画像を変更
  2. タイムアップをしたら,タイムアップシーンへと飛ばす
  3. 実行して確認

編集する

badendシーンを作成する
  1. edukit内のend選択
  2. Edit>Duplicate で複製する
    enddup
  3. ファイル名がend 1になるので,名前を badend に変更
    badend
画像を入れ替える
  1. badendをダブルクリックして開く
  2. Hiearchy>Canvas>Imageを選択する
    canvas
  3. インスペクタのSource Imageで画像を「ざんねんでした」と表示されている画像(ui_1)にする
    imageswap
  4. リザルトは不要なので,Hierarchy>Canvas>timemat を選択し,右クリック>Delete で削除する
    timedelete
ビルドシーンに加える
  1. このシーンをビルドする対象に含める(でないとシーン遷移できない)
  2. (下図の1)File>Build Settings… を開く
  3. (下図の2)Add Open Sceneをクリックする
  4. (下図の3)badendが追加されたか確認して閉じるbuildscn
スクリプトを変更する1
  1. edukit>myQuest をエディタで開く
  2. 以下のスクリプトを追加する.どこに追加するとよいか?(これは滑り台のように1回実行されるもの)
	void gobadEnd(){
		SceneManager.LoadScene ("badend");//go badend scene
	}
スクリプトを変更する2
  • 同じくmyQuestを開き,タイムアップした箇所で上記の関数を実行するにはどうすればよいか?(ヒントは上の復習コーナーに)
その他
  • 自習用のサンプルなどを例示する

Dictionaryの使い方(MBAAS関連)

MBAASはJSON互換だけど,JSONは遅れずDictionaryが受けられるらしい.

んで,Dictionaryを真面目に使ったらエラーでるのよ.

 

いける例

using System.Collections.Generic;

public class skillSender : MonoBehaviour {
	
		 static public Dictionary<string,int> skillPDic;//スキルチェックポイント用


	// Use this for initialization
	void Start () {

			skillPDic = new Dictionary<string, int> () {
				};

	}

NGの例

using System.Collections.Generic;

public class skillSender : MonoBehaviour {
	
		 static public Dictionary<string,int> skillPDic;//スキルチェックポイント用


	// Use this for initialization
	void Start () {

			Dictionary<string,int> skillPDic = new Dictionary<string, int> () {
				};

	}

 

 

 

Photoshop入門その6

色調補正

  1. モード変更
    1. 8bit/チャンネル
    2. 16bit/チャンネル
  2. 明るさ・コントラストの調整
  3. レベル補正
    1. 黒,グレー,白色点を指定
  4. 色相・彩度
    1. HSVモデルについても確認すること
  5. シャドウ・ハイライト
    1. HDR風画像など

 

Photoshop課題

  • 自分で撮影した画像5枚以上を用いて,スケール感を混乱させる画像を作成せよ
  • アイデアスケッチを提出すること(完成画像提出時に紙で提出)
  • 完成画像1枚以上,使用した素材画像全てを提出(完成画像だけ提出の場合は未提出扱いとなる)
  • 他人が撮影した素材は絶対に使用しないこと
  • 締め切り月曜クラス12月12日授業開始時までに,木曜クラス12月15日授業開始時までに
  • 提出先: Share

Unity入門-14

 

0秒になったら終了させる

  • まずは時間がゼロ秒になったら終わらせるプログラムを入れる場所を探す
  • 探し方概要
    • 概要:いろいろな場所にDebug.Log(“koko”);を書いて,1秒毎に変化する場所を探す
    • 入力した行が実行された時にコンソールkokoと表示される
    • コンソールのCollapseはオフにする(Collapse同じ内容は1行だけ表示する機能をオフにする)
  • 実際の探し方
    • 各関数{}内の最初か終わり近くにDebug.Log(“koko”);を記入
    • 保存→ゲーム実行→Consoleを確認 を繰り返し,秒変化と同じタイミングで現れる箇所を探す
    • ヒント:秒の変化と音(Tick)の再生は同期しているので,そのあたり,,,?
  • その場所に以下のプログラムを入力する
			if (gameTime < 1) {
				//go end
				StopCoroutine("loop");
				Invoke("goEnd", 2f);
			}

変数 gameTimeが1未満になったら,時間制御をしているコルーチンloopを止めて,goEndの関数を2秒後に実行 の意味

こちらは2秒後に実行されるので,少し余裕が持てます.goEndを実行するタイミング(ここでは2秒)を変えて自分が最も良いと思う時間に変更してみましょう

なお2fのfはfloat(実数)の意味です.Unity上では実数の場合はfとつけるルールがあります

 

これでもいけます

if (gameTime < 1) {
goEnd();
			}

変数gameTimegが1未満になったらgoEnd関数を実行(こっちは2秒待たないのでせわしない)

 

シーンチェンジはどこ?

  • シーン「end」にジャンプする関数 void ○○○(){   } はどこか再度確認すること(上でに書いてありますが)

変数宣言をいろいろ試す

  • 変数宣言をする場所がある
    • グローバル編
      • プログラムのどこでも使えるけど,このプログラム外では使えない
      • publicをつけるとインスペクタで設定できる.インスペクタで設定した値は,プログラムで宣言した値よりも優先される(プログラム側で変更はできる)
      • privateをつけるか何もつけない変数宣言はインスペクタには表示されない
    • ローカル編
      • 関数内で使える(ちょいとメモ代わりや,変数の受け口に使える)
    • 神編
      • staticは神
      • public static int mikeneko; と宣言すると,スクリプト名.mikeneko でゲーム内のどこでも使える
      • ただし関数などによってはstaticを嫌うものがあるので,その際はnamespaceなどを使ってusingする

Photoshop入門その5

レイヤーその2

  1. レイヤーマスク(白と黒で消す)
  2. レイヤースタイル(効果,ボタン作成などにも)
  3. 自由変形
  4. 変形・ワープ変形モード(ベジェカーブを手がかりに変形)
  5. パペット変形(関節のような変形)
  6. レイヤーの整理
    1. レイヤーの結合(レイヤーをまとめる)
    2. 画像を統合(1枚の画像にまとめる)
    3. 画像の書き出し(JPEGなど非可逆圧縮で保存=>送りやすい)