Unityのキャッチアップ中に得た知識を覚書として記す。順次更新予定✋
スクショめんどいので文字のみで✋
やる気でたらスクショする👍
1. スクリプトで扱う変数の値をGUI上でいじりたい
手順
- 使いたいオブジェクトに適応させたいスクリプトをアタッチ
- スクリプトに以下のように記述
using UnityEngine;
using System.Collections;
public class ImageBackground : MonoBehaviour {
//回転速度
public float rotateRate; //<-ココ!この部分がinspector上で編集可能になる
void Update () {
//背景画像を回転
transform.Rotate (0.0f, 0.0f, rotateRate);
}
}
2. 自前のフォントを利用したい
手順
- フォントファイル(ttfやotfファイル)をAsset/Fontsなど、適当なフォルダに配置
- 「スクリプトで扱う変数の値をGUI上でいじりたい」のrotateRate変数と同じように、クラス中に
public GUIStyle guiStyle;
というように記述 - 上記が記入されたスクリプトがアタッチされたinspectorを参照し、1.で配置したフォントを指定
これでフォントの種類やサイズなどを指定できるようになる
Unity: iOS上でGUILayout.Labelのフォントサイズを大きくしたい
http://hamken100.blogspot.jp/2012/04/unity-iosguilayoutlabel.html
3. タイミングを細かく指定して何かのアクションをさせたい
コルーチンつかう。
4. スワイプやダブルタップ、ロングタップなどのジェスチャーを使いたい
AssetStoreから買うしか無い。
Input.Touches - Asset Store
https://www.assetstore.unity3d.com/jp/#!/content/3283
もしくはこれを改造か?
Unity 2D 画面タッチでカメラ移動する
http://qiita.com/shell/items/b8d6bd2c4bd42913189e
5. シーン遷移時にフェードイン・アウト演出をしたい
以下を導入すれば可能
デバッグモードをオフにするときはプレハブのinspectorからDebug Modeのチェックを外す
【Unity】シーン遷移時のフェードイン・フェードアウトを実装してみた
http://naichilab.blogspot.jp/2013/12/unity.html
6. Unityのゲーム画面を綺麗にするライティング
Unityのゲーム画面を綺麗にするライティング - テラシュールブログ
http://tsubakit1.hateblo.jp/entry/2014/09/14/170753
##7.スクリプト上でオブジェクト(のコピー、あるいはプレハブ)を生成したい
instantiate命令を使う
Unity - スクリプトリファレンス:: Object.Instantiate
http://docs.unity3d.com/ja/current/ScriptReference/Object.Instantiate.html
##8. スクリプト上で別オブジェクトを取得したい
方法その1. Find系命令でオブジェクト名(or タグ)から探して取得
自発的にオブジェクトを取得したい場合はコレ。
GameObject object = GameObject.Find("ObjectName");
GameObject object = GameObject.FindWithTag("Tag");
etc...
方法その2. public変数を実装してインスペクタで指定しておく
最初からオブジェクトが明白な場合はコレ。
public GameObject object;
方法その3. イニシャライザ(のようなもの)を実装してオブジェクトを渡す
プレハブから生成したオブジェクトに初期値として渡したい場合はコレ。
GameObject以外の値もモチロン渡せる
private GameObject gameObject;
private bool isInitialized=false;
void Initialize(GameObject object){
this.gameObject = object;
this.isInitialized = true;
}
void Update(){
if (!isInitialized){
return;/*イニシャライズが終わるまでupdateしない*/
}
/*ここにupdate処理*/
}
public Foo foo; /*インスペクタで指定したプレハブ*/
void createFoo(){
Foo object = Instantiate (foo);
object.Initialize(this);
}
9. ブレイブフロンティアみたいなUIの動き
iTween.MoveFromとMoveToでブレイブフロンティアっぽい動きのあるUIを作ってみる
http://bribser.co.jp/blog/itween-movefrom-and-moveto-make-ui-animation-like-brave-frontier/
10. iTweenによる任意な値の変化付け
iTween.ValueTo()
を用いる
以下にオブジェクトのスケールを断続的に変化させ、伸縮を繰り返すサンプルコードを載せる
using UnityEngine;
using System.Collections;
public class Action : MonoBehaviour {
// Use this for initialization
void Start () {
iTween.ValueTo(gameObject,
iTween.Hash(
"from",1,"to",0.9f,"time",1.0f, //1秒かけて1~0.9の間で変化
"easeType", "easeOutQuart", //動きの種類
"looptype","pingpong", //ループの種類
"onupdate","ScaleChange" //呼び出す関数
));
}
void ScaleChange(float value){
FirstStarGrow.transform.localScale = new Vector3(value, value, 1);
}
}
【Unity】Unity&Orthelloによる2Dゲーム作成⑤ - ハルシオンシステムの気ままBlog
http://halcyonsystemblog.blog.fc2.com/blog-entry-36.html