2017-11-04 13 views
0

문제가 생겨서 고칠 수없는 문제가 있습니다.Unity 2D - 스크립트 활성화시 Null 참조

나는 AIManager 스크립트를 가지고 있습니다. 여기에는 모든 통제와 내 적의 움직임이 있습니다. 그런 다음 EnemyBasic 스크립트가 있습니다. 이것은이 적의 AI 행동을 나타냅니다. 얼마나 자주 공격 할 것인가?

Raycasts에 관한 튜토리얼을 사용하여 내 적을 시야에 넣을 수있었습니다. 이것은 효과가 있었고 적군은 나를 공공 장소에서 테스트했습니다.

이제 문제가되는 부분입니다. EnemyBasic 스크립트를 비활성화하면 적이 한 곳에 머무르게됩니다. 그의 시야에 들어선 후 EnemyBasic 스크립트를 활성화하여 공격을 시작할 수 있습니다.

는 NullReferenceException : 개체 Sight.Raycasting (의 인스턴스로 설정되지 않았습니다 개체 참조) (자산/Sight.cs에서 : 21) Sight.Update() (불행히도, 내 코드와 함께,이 오류를 제공합니다 자산/Sight.cs에서 :

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Sight : MonoBehaviour { 

    public Transform sightStart, sightEnd; 
    public bool spotted = false; 

    void Update() { 
     Raycasting(); 
    } 

    void Raycasting() 
    { 
     spotted = Physics2D.Linecast(sightStart.position, sightEnd.position, 1 << LayerMask.NameToLayer("Player")); 

     if (spotted) 
     { 
      /*---> LINE OF ERROR */ gameObject.GetComponent<EnemyBasic>().enabled = true; 
     } 
    } 
} 

어떤 아이디어 : 13)

여기 내 코드입니다. 나는 화합에 처음이므로 무언가 어리 석다는 높은 기회가 있습니다. 감사합니다.

+0

오류를 두 번 클릭하고 오류의 원인이되는 코드 줄을 게시하십시오. – Programmer

+0

완료. 나는 화살을 더했다. – TheNewbie

+0

확인. 1. 위의'Sight' 스크립트가 붙어있는 GameObject의 이름은 무엇입니까? 2. EnemyBasic 스크립트가 붙어있는 GameObject의 이름은 무엇입니까? – Programmer

답변

0

마찬가지로 @Programmer가 의견에서 제안했습니다. 내 시력 스크립트가 EnemyBasic 스크립트와 동일한 GameObejct에 속하지 않았 음을 나타냅니다. 스크립트를 복사하고 매력처럼 작동합니다.