0

現時点では、C#についてはよくわかりません。Unityのクラッシュコースを光速で放り投げられているところです。

このスクリプトをデスクトップからUnityプロジェクトビューのアセットフォルダーにドラッグアンドドロップしようとしましたが、「解析エラー1,13」と表示されました。スクリプトの何が問題なのかわかりません。より経験豊富な目を持つ人はそれを一瞥することができますか?

var emitter : ParticleEmitter = GetComponentsInChildren(Partic­­leEmitter);

if (Input.GetButton("Fire1")){ emitter.emit=true;

}

else{

emitter.emit=false;

}
4

5 に答える 5

3

私自身 C# で Unity を使用したことはありませんが、あなたのスクリプトは有効な C# 構文でさえないと言えます。C# 変数は、次の 2 つの方法のいずれかで型指定されます。

  • 暗黙的var x = SomeExpression;に: x は自動的に式の型をとります
  • 明示的ParticleEmitter x = SomeExpression;に: x は aParticleEmitterであり、式は同じ型である必要があります。

エラーは、具体的には:、最初の行のについて比較しています。その位置に合法的に表示できる唯一の文字は=.

于 2012-11-25T00:15:54.943 に答える
2

これは C# ではなく、UnityScript (JavaScript に基づいています) で記述されています。

UnityScript では「:」コロン文字が型宣言として使用されますが、C# では無効であるため、これがわかります。

于 2012-11-25T04:14:31.160 に答える
1

自分でC#を使用したことはありませんが、最初の行の「:ParticleEmitter」の部分を省略して暗黙的な型宣言を試みます...

于 2012-11-25T00:11:26.223 に答える
0

CC Incが述べているように、提供したコードはC#ではありません

私はあなたのためにそれを変換しようとしました:

ParticleEmitter emitter = GetComponentsInChildren<ParticleEmitter>().FirstOrDefault();

if (emitter != null)
{
    if (Input.GetButton("Fire1"))
    {
        emitter.emit = true;
    }
    else
    {
        emitter.emit = false;
    }
}

GetComponentsInChildrenは配列を返します。そのため、上記の内容を模倣するために、最初のものが必要であると述べました。見つからない場合は、デフォルト(null)を指定してください。

これはあなたが必要とするものではないかもしれませんあなたは次の行だけで何かが欲しいかもしれません:

bool fire = Input.GetButton("Fire1");
ParticleEmitter[] emitters = GetComponentsInChildren<ParticleEmitter>();
foreach(ParticleEmitter emitter in emitters)
{
    emitter.emit = fire; 
}

上記は、Input.GetButtonのブール結果を格納し、検出したすべてのエミッターをループして、Input.Getbuttonと同じ値に設定します。

明らかに、上記はすべてあなたが望むものを推測しているだけです、私はそれが役立つことを願っています。

于 2012-11-25T15:03:57.970 に答える
0

GetComponentsInChildren() はコンポーネントのタイプを返します。解析エラーは、おそらくComponent型を型に渡すことを調整しようとしているコンパイラによるParticleEmitterものです。

Unity3D docs のこの例は、Component.GetComponentsInChildrenあなたを助けるはずです:

 // Disable the spring on all HingeJoints 
 // in this game object and all its child game objects
 var hingeJoints : Component[];
 hingeJoints = GetComponentsInChildren (HingeJoint);
 for (var joint : HingeJoint in hingeJoints) {
     joint.useSpring = false;
 }
于 2012-11-25T01:37:31.317 に答える