2016-09-11 3 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

클래스 멤버는 클래스 블록 내부에 정의해야 내 스크립트이지만, 방법 밖에.

모든 "public"행을 "void Start()"행 위로 이동하십시오.

0

Flux와 Peter가 언급 한 것처럼 공공 및 비공개와 같은 액세스 한정자는 클래스 수준 멤버에만 적용 할 수 있습니다. 즉, 귀하의 직무와 동일한 수준에있는 회원을 의미합니다.

이 클래스 또는 하나 개의 기능을 어디에서나 속도 변수를 사용할지 여부에 따라 사용 접근 할 것을 지시합니다. 이제 게임 프로그래밍에 내 경험을 바탕으로

, 속도는 클래스 레벨의 변수로 원하는 것이 무엇인가, 그리고 당신은뿐만 아니라 다른 개체에서 해당 변수에 액세스 할 수 있도록하려는 것이다.

그래서 나는 또한 당신이 캡슐화를 사용하는 것이 아주 좋은 이유라고 지적 할 것입니다. 어떤 시점에서 속도 변수의 사용 방식이나 계산 방법을 변경하려는 경우 캡슐화를 사용하면 해당 속성을 사용하는 다른 객체의 코드를 수정할 필요없이 해당 "속성"의 구현을 변경할 수 있습니다.

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() 
    { 
     ... 
    } 
}