私のPlayer GameObjectの子供の使用可能な変数にアクセスする際に問題があります。 Unity:ChildrensにアクセスできないSpriteRenderer.enabled
- ヒトが唯一の私が何をしたいのかSpriteRenderer
を保持Rigidbody2D、BoxCollider、PlayerControllerスクリプトやアニメーター
が-bodyとrange_attack_body保持している:私は私のSpriteRendererを変更したい
マウスボタンが押されているときのPlayerオブジェクトです。 bodyとrange_attack_bodyにはSpriteRenderersがあります。どちらのゲームオブジェクトもアニメーションの一部です。 body.SpriteRendererがアクティブで、通常の動作中はrange_attack_body.SpriteRendererが非アクティブです。 私のPlayerControllerスクリプトでは、マウスボタンが押されているときに攻撃アニメーションをトリガーするルーチンを書きました。このルーチンでは、SpriteRenderersの有効状態を変更したいと考えました。しかし、何も起こっていない、つまり、varibalesが実行時に変更されていないことを意味します。 GameObjectsとSpriteRenderersがAwake()の間に正しくアクセスされているかどうかをチェックしていて、SpriteRenderer配列の両方のレンダラーをデバッグメッセージを使って見つけることができます。 これに加えて、ヒューマンゲームオブジェクトにSpriteRendererを追加するとどうなるかを確認しました。私のSpriteRenderer配列に表示され、私は自分のルーチンでそれらを変更することができます有効な変数への完全なアクセス権を持っています。だから私は、SpriteRenderersがアニメーションの一部であるため、bodyとrange_attack_bodyとの競合があるかもしれないと考えました。私はHuman.SpriteRendererをアニメーションに追加しましたが、変数を変更することはできます。 私は何が起こっているのか分からない、助けてください。ここにいくつかのコードがあります:
public class PlayerController2D : PhysicsObject {
public float maxSpeed = 7f;
public float jumpTakeOffSpeed = 7f;
public float posOffset = 1;
protected bool flipSprite = false;
protected bool flipState = true;
private Animator animator;
private SpriteRenderer[] spriteRenderers;
void Awake()
{
animator = GetComponent<Animator>();
GameObject human = GameObject.Find("Human");
spriteRenderers = human.GetComponentsInChildren<SpriteRenderer>();
}
protected override void Attack()
{
if(Input.GetMouseButton(0))
{
spriteRenderers[0].enabled = false;
spriteRenderers[1].enabled = true;
Debug.LogError("Inhalt:" + spriteRenderers[0].ToString());
Debug.LogError("Inhalt:" + spriteRenderers[1].ToString());
animator.SetBool("attack", true); // boolean to start hold animation
}
else if(!Input.GetMouseButton(0))
{
spriteRenderers[0].enabled = true;
spriteRenderers[1].enabled = false;
animator.SetBool("attack", false);
}
}
}
それでした!私はリリースアニメーションの中で有効になっているプロパティをまだ持っていたことを忘れていました。クリップを削除した後、スクリプトはうまくいきました。どうもありがとう! :D – SuperTasche
あなたは喜んで喜んで助けになるでしょう。 :) – Galandil