Unity Script(自分用メモ)
スクリプトからアニメーションの状態を取得する。
現在のステートマシンの状態を取得するにはAnimatorからAnimatorStateInfoオブジェクトを取得し、メソッドを通じて状態にアクセスする。
比較を行うにはステート名をハッシュに変換してから比較する必要がある。またステート名にはレイヤー名が含まれるので、記述の方法に注意する。デフォルトのレイヤー名はBaseとなりドットで区切ってステート名を記述する。 `
using UnityEngine;
using System.Collections;
public class RoboStateC : MonoBehaviour {
<span class="c1">// Update is called once per frame</span>
<span class="k">void</span> <span class="nf">Update</span> <span class="p">()</span> <span class="p">{</span>
<span class="n">AnimatorStateInfo</span> <span class="n">state</span> <span class="p"> =</span> <span class="n">GetComponent</span><span class="p"></span> <span class="p">().</span><span class="n">GetCurrentAnimatorStateInfo</span> <span class="p">(</span><span class="m">0</span><span class="p">);</span> <span class="k"> if</span> <span class="p">(</span><span class="n">state</span><span class="p">.</span><span class="n">nameHash</span> <span class="p">==</span> <span class="n">Animator</span><span class="p">.</span><span class="n">StringToHash</span><span class="p">(</span><span class="s">"Base Layer.Lose"</span><span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
<span class="n">transform</span><span class="p">.</span><span class="n">localScale</span> <span class="p">=</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="m">0.5f</span><span class="p">,</span> <span class="m">0.5f</span><span class="p">,</span> <span class="m">0.5f</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="n">transform</span><span class="p">.</span><span class="n">localScale</span> <span class="p">=</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="m">1f</span><span class="p">,</span><span class="m">1f</span><span class="p">,</span><span class="m">1f</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
}`
ハッシュにしないでメソッドで確認する事もできる。 `
using UnityEngine;
using System.Collections;
public class RoboStateC : MonoBehaviour {
<span class="c1">// Update is called once per frame</span>
<span class="k">void</span> <span class="nf">Update</span> <span class="p">()</span> <span class="p">{</span>
<span class="n">AnimatorStateInfo</span> <span class="n">state</span> <span class="p">=</span> <span class="n">GetComponent</span><span class="p"></span> <span class="p">().</span><span class="n">GetCurrentAnimatorStateInfo</span> <span class="p">(</span><span class="m">0</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">.</span><span class="n">IsName</span><span class="p">(</span><span class="s">"Base Layer.Lose"</span><span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
<span class="n">transform</span><span class="p">.</span><span class="n">localScale</span> <span class="p">=</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="m">0.5f</span><span class="p">,</span> <span class="m">0.5f</span><span class="p">,</span> <span class="m">0.5f</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="n">transform</span><span class="p">.</span><span class="n">localScale</span> <span class="p">=</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="m">1f</span><span class="p">,</span><span class="m">1f</span><span class="p">,</span><span class="m">1f</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
}`
GameObjectに付けられたScript を、一時的に外す。
gameObject.GetComponent().enabled = false;
TextMesh.text
string text;
Description
画面に表示されるテキストを返す
See Also: text mesh component.
using UnityEngine;
using System.Collections;
public class Example :
MonoBehaviour {
void Example() {
GetComponent().text = "Hello World";
}
}
public class Chatplate : MonoBehaviour {
TextMesh textMesh;
void Start ()
{
// コンポーネントのキッシュ.
textMesh = GetComponent();
}
void Update ()
{
if (networkView.isMine)
{
if (textMesh.text != "")
{
//3Dテキストにテキストを入力
textMesh.text = chattext;
}
}
}
}
Transform.localScale
Vector3 localScale;
Description
親のTransformオブジェクトから見た相対的なオブジェクトの大きさ
using UnityEngine;
using System.Collections;public class Example : MonoBehaviour {
void Example() {
transform.localScale += new Vector3(0.1F, 0, 0);
}
}
GameObject.SetActive
void SetActive(bool value);
Parameters
Description
ゲームオブジェクトを有効化/無効化します。
ゲームオブジェクトの親オブジェクトが無効であるために無効となる場合があることに留意して下さい。その場合、 SetActive() を呼び出ししても有効化されず、ゲームオブジェクトのローカルなステートがセットされ、 それは GameObject.activeSelf を使用することでチェックできます。このステートは次に全ての親オブジェクトが有効化されたときに 使用されます。
using UnityEngine;
using System.Collections;public class Example : MonoBehaviour {
void Example() {
gameObject.SetActive(false);
}
}