2016-09-11 4 views
0

私は統一されていませんが、変数を作成するたびにエラーが表示されます。floatを作成中に予期しないシンボル 'public'が発生する

それはエラーcs1525は言う:ここ

「国民の予期しない記号が

using UnityEngine; 
using System.Collections; 

public class move : MonoBehaviour 
{ 

    // Use this for initialization 
    void Start() 
    { 
     public float speed = 3.0f; 
    } 

    // Update is called once per frame 
    void Update() 
    { 

    } 
} 
+1

'public'はクラスメンバーです。それをローカル変数宣言に入れる必要はなく、どんな場合でもそれは正当ではありません。 'speed'がクラスフィールドかローカル変数かを決定し、それに応じて宣言します。 –

答えて

2

クラスメンバーはクラスのブロック内で定義されなければならない私のスクリプトですが、メソッドの外。

すべての「公開」行を「無効な開始()」行の上に移動します。

0

FluxとPeterが述べたように、publicやprivateのようなアクセス修飾子は、クラスレベルメンバにしか適用できません。これはあなたの機能と同じレベルにあるメンバーを意味します。

このクラスのスピード変数を使用するか、または1つの関数だけを使用するかによって、使用するアプローチが決まります。

私はゲームプログラミングの経験に基づいて、スピードをクラスレベル変数として使いたいと思っています。その変数に他のオブジェクトからもアクセスできるようにしたいと考えています。

だから私もあなたに指摘しますは非常に良い理由のためにカプセル化を使用する必要があります。ある時点で速度変数の使用方法や計算方法を変更したい場合、カプセル化を使用すると、そのプロパティを使用する他のオブジェクトのコードを変更する必要なく、その "プロパティ"の実装を変更できます。

public class move : MonoBehaviour 
{ 
    private float speed = 3.0f; 

    public void SetSpeed(float newSpeed) 
    { 
     speed = newSpeed; 
    } 

    public float GetSpeed() 
    { 
     return speed; 
    } 

    // Use this for initialization 
    void Start() 
    { 
     ... 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     ... 
    } 
} 
関連する問題