Unityのゲーム制作で個人的によく使う機能やスクリプトメモ

メモ内容
サイズ設定をBest Fitにしている場合。
Minサイズの最大値が思ったよりも大きく設定できない場合がある。
そんなときは、Font sizeの数値を見てみるといい。
おそらくだが、Minサイズの数値は、Font sizeの数値よりも大きい値が設定できないようになっているようだ。

回転向きを設定する
this.transform.rotation = Quaternion.Euler(0.0f, 0.0f, 0.0f);

1回だけ回転させる(UpDateで連続使用)
this.transform.Rotate(0, 0, kaiten);

DontDestroyOnLoad(gameObject);
赤P408

public AudioClip stageMusic1;
public AudioClip stageMusic2;

このどちらかをランダムに再生
~~~~~~~~~~~~~~
public void StartStageMusic()
{

int num = Random.Range(1, 5);//1から5の中でランダムに生成

AudioSource audio = GetComponent();

switch (num)
{
case 1:
audio.clip = stageMusic1;
break;
case 2:
audio.clip = stageMusic1;
break;
case 3:
audio.clip = stageMusic2;
break;
case 4:
audio.clip = stageMusic2;
break;
case 5:
audio.clip = stageMusic2;
break;
}

audio.Play();

}

そのGameObjectを、一度SetActive(false)をすると、nullになる(見失う)。
デフォルトの背景を変更
「Edit」⇒「Preferences」⇒「Colors」⇒「Scene」⇒「Background」
制作画面上にあるGismosという項目を押して、Gismosを非表示にすればよい。
name (1)←数値の前に半角スペースあり

のような数値付きの名前でコピペすると
name (1)
name (2)
name (3)
name (4)



と生成される

public GameObgect obj;

obj.GetComponent<SpriteRenderer>().color = Color.green;//緑に変える

obj.GetComponent<SpriteRenderer>().color = new Color32(0, 255, 35, 255);//緑に変える(透明度まで指定可能)

using UnityEngine.UI;

public GameObgect obj;

obj.GetComponent<Image>().color = new Color32(255, 255, 255, 51);

○○.enabled = false

そのコンポーネントがfalseで無効化される。trueで有効化。

GameObjectをアクティブ状態にしたまま、Image無効化で非表示にできる。

private void OnEnable()

Aの処理中
StartCoroutine(“aaa”);//指定された「コルーチン」を呼び出す

これを実行したら以下のaaaメソッドが実行され、指定時間経過後『発動したい処理B』が実行される。
ただし、Aの処理は止まるわけではなく、指定時間のズレをともないながら並行的に、AとBの処理が走ることとなる。

IEnumerator aaa() //「コルーチン」で呼び出すメソッド
{

Debug.Log(“開始”);

yield return new WaitForSeconds(1); //1秒待つ

Debug.Log(“1秒経ちました”);

発動したい処理B;

}

void Update()
{

transform.position += new Vector3(0, 0, 1) * Time.deltaTime;

(フレームレートによって差が出るところを * Time.deltaTimeで均一にしている)

}

ワールド座標による移動(指定した値分だけ移動する方法)
obj.transform.position += new Vector3(5,0,0);

ローカル座標による移動(指定した値分だけ移動する方法)
obj.transform.localPosition += new Vector3(5,0,0);

指定の座標へダイレクトにワープする移動
obj.transform.localPosition = new Vector3(5,0,0);

obj.transform.localScale = new Vector3(-1, 1, 1);


黄色いエリアが『Scroll View』のエリア。

このサイズが、スクロール領域を『表示』するエリアとなる。

たとえば

1080 1920のところを

300 300に変更したなら

狭い四角いエリアの黄色い窓のなかで、黒いボタンたちをスワイプで見ていくこととなる。

つまり、『Scroll View』とは、スクロールを見ることができるエリアのことである。

また、スクリプトにある『Scroll Rect』のContentに登録したオブジェクトをスクロールしていくこととなる。

つづいてスクロールさせたい中身の領域について↓

黒いオブジェクトが均一にならんでいるのは

『Grid Layout Group』と『Content Size Fitter』の制御によるものらしい。

この制御を外すと、きれいにならばせるプログラムは働かなくなり、よって、Hreightの1563が変更可能となる。

この値が、『スクロールさせたいオブジェクトたちがならんだ全エリア』を示している。

using UnityEngine.Rendering;

SortingGroup sortingGroup;

sortingGroup.sortingOrder = 4;

player.renderer.sortingOrder = 10;

スクリプトからSprite Renderer の Order in Layer をかえる方法
GetComponent().sortingOrder = 数字;

1、2が同時になると、OnTriggerStay2Dがスリープ状態になる。

1 isTriggerがTrue
2 Collider2Dを持つ双方のオブジェクトがどちらも動いてない

解決策
Rigidbody2Dコンポーネント内のSleeping ModeをNever Sleepに変更

cameraObject.transform.position = new Vector3 (0, 0, -10 );//ゲームクリア時にカメラ位置をもとにもどしておきたいとする。
z座標を-10などとして、プレイヤーオブジェクト重ならないようにする。でないと、プレイヤーオブジェクトと同じ深さでは、重なって何も映らなくなる。
つまり、SendMessageで値を渡せるのは1つ、ということになる。

また、void型のメソッドしかSendMessageで実行できない。(値が受け取れない)

public GameObject obj;

a = obj.GetComponent<スクリプト名>().変数名;

~~~~スプライトレンダラーの画像を変更する場合~~

public Sprite aaaImage;

this.GetComponent<SpriteRenderer>().sprite = aaaImage;

~~~~Imageの画像を変更する場合~~
using UnityEngine.UI;

public Sprite Image1D1077;

private Image imageee;

void Start()
{
imageee = GetComponent<Image>();

imageee.sprite = Image1D1077;

}

サウンドソースにアタッチするオブジェクト

public class SoundList : MonoBehaviour
{

public static SoundList dokodemo;
private void Awake()
{
if (dokodemo == null)
{
dokodemo = this;

}

}
}

public GameObject soundSourceObj;このオブジェクトを登録しておく

public AudioClip aaaSound;

public AudioClip bbbSound;

public AudioClip cccSound;

~~~~~~鳴らしたいオブジェクトにアタッチする内容~~~~~~~

private AudioClip se;

private GameObject soundSource;

private void OnEnable()
{
soundSource = SoundList.dokodemo.soundSourceObj;

se = SoundList.dokodemo.aaaSound;
}

//サウンドを鳴らす
soundSource.GetComponent<AudioSource>().PlayOneShot(se);

soundObject.GetComponent<AudioSource>().volume = 0;ボリュームを0にする

7分の2の確率

int number = Random.Range(1, 7);1から7の中でランダムに生成

if(number <= 2) 起こしたい事

【string⇒int】
string moji = “文字”
int a = int.Parse(moji);

【int⇒string】
int a = 123;
Obj.GetComponent<Text>().text = a.ToString();
(int型をstringに変換してテキストに代入する)

インスペクターの右上のロックマークをロックすると、画面が切り替わらなくなり、複数選択でのドラッグ&ドロップが可能となる。
Buttonの項目のなかにあるTarget Graphicをいじってしまった可能性がある。
デフォルトの状態にもどす。
つまり、Buttonコンポーネントをアタッチしたオブジェクトそのものを登録しておく。

フォントをクリックし
フォントの設定
のように、HintidRasterを選ぶとアンチエイリアス処理されなくなる。

または

CanvasのPixelPerfectにチェックを入れる。

または

大きい文字を出し、Scaleで小さく表示する。

または

文字がぼやけるとき
の100の値をいじってみる。

RectTranceformのコンポーネントを削除する
スポンサーリンク