2016-10-20 2 views
-2
public class Scroll : MonoBehaviour { 

    public float speed = 0.5f; 

    void Update() 
    { 
     Vector2 offset = new Vector2(0, Time.time * speed); 

     renderer.material.mainTextureOffset = offset; 

    } 

어디에 문제가 있는지 알 수는 없지만 렌더러 소재 부분에 있어야합니다.렌더러에 버그가 있습니다.

이 코드를 쿼드에 넣으면 내 배경이됩니다.

편집 : 오류 메시지 : - Assets/Scroll.cs (12,8) : 오류 CS0619 : UnityEngine.Component.renderer' is obsolete: 속성 렌더러가 더 이상 사용되지 않습니다. 대신 GetComponent()를 사용하십시오. (UnityUpgradable) ' - Assets/Scroll.cs (12,17) : 오류 CS1061 : UnityEngine.Component' does not contain a definition for 자료'및 확장 방법 없음 material' of type UnityEngine.Component '를 찾을 수 있습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) - 파일을 분석 할 수 없습니다. Assets/Game scene.unity.meta : 0 행의 [제어 문자는 허용되지 않습니다]

+0

Exception \ Error 메시지를 추가하십시오. –

+0

'Time.time' 두 프레임 사이에 델타가 있으면? 단지 시간의. 왜냐하면'y' 값은 시간이 지남에 따라 증가하기 때문입니다. 현재 및 이전 업데이트 사이의 델타를 계산할 수 있습니다. –

+0

두 프레임 사이의 경과 시간 인 'Time.deltaTime'을 원할 수도 있습니다. – muXXmit2X

답변

0

MonoBehaviour에서 직접 상속 된 renderer에 더 이상 액세스 할 수 없습니다. Renderer을 얻으려면 GetComponent을 사용해야합니다. 같은 일이 RigidbodyAudioSource과 같은 다른 구성 요소에도 적용됩니다. 의 코스

Renderer myRenderer; 
public float speed = 0.5f; 

void Start() 
{ 
    myRenderer = GetComponent<Renderer>(); 
} 

// Update is called once per frame 
void Update() 
{ 
    Vector2 offset = new Vector2(0, Time.time * speed); 
    myRenderer.material.mainTextureOffset = offset; 
} 

, GetComponent<Renderer>().material.mainTextureOffset = offset; 너무 일 수도 있지만, 내가 처음 스크립트에서했던 것처럼 그것을 캐시하는 것이 좋습니다.

+0

또한'muXXmit2X'에 언급 된 바와 같이'Time.deltaTime * speed'가되어야합니다. –

+0

@GunnarB. 'Time.time'은 매 초마다 증가하기 때문에이를 위해 사용해야합니다. 텍스처 오프셋을 이동하려면 끊임없이 증가하거나 감소하는 변수를 사용해야합니다. 그것은 'Time.deltaTime'이 사용 된 것이 아닙니다. 'Time.deltaTime'은 값들을 부드럽게하는 데 사용됩니다. 'Time.time'은 [this] (https://docs.unity3d.com/ScriptReference/Material-mainTextureOffset.html)에 적합합니다. – Programmer

+0

@Adem, 'Texture Type'을 'Texture'로 변경 한 다음 'Wrap Mode'를 'Repeat'로 변경하십시오. 자세한 내용은 [여기] (http://stackoverflow.com/a/36948841/3785314). – Programmer

관련 문제