2017-12-21 6 views
0

파이썬에서 실행되는 멀티 플레이어 게임을 호스팅했으며, 내가 그런 메시지를 보여줄 때와 같은 방식으로 스크립트를 편집하고 싶었습니다. 모든 사람의 화면에 재생이 표시됩니다. 나는 이것을 할 수 있었지만 메시지는 모든 경기의 시작 부분에 표시됩니다, 나는 그것을 고치려고했지만 문제가 생겼습니다. 이것은 파이썬 스크립트는 내가 편집하는 것을 시도하고있다 :g == 0 인 경우 : UnboundLocalError : 할당 전에 로컬 변수 'g'가 참조되었습니다.

def onPlayerJoin(self,player): 
    'Called for all new bs.Players (including the initial set of them).' 
    if player.getName(full=True,icon=False) == "AwesomeLogic": 
     if g == 0: 
      bs.screenMessage("AwesomeLogic is playing") 
      g = 1 


def onPlayerLeave(self,player): 
    'Called when a player is leaving the activity.' 
    g = 0 

을하지만이 날 오류가 있습니다 :

if g == 0: UnboundLocalError: local variable 'g' referenced before assignment 

사람이 내가 잘못는지 말해 주실 수 있습니까?

+0

당신이 다른 사람이 가정 전역 변수로'''g'''를 정의해야 그것은 지역 변수로. –

+0

[파이썬에서 전역 변수를 설정할 수없는 이유는 무엇입니까?] (https://stackoverflow.com/questions/1281184/why-cant-i-set-a-global-variable-in-python) – Julien

답변

0

가변 범위 읽기 : 함수 내에 할당 된 모든 변수 (재)는 기본적으로 로컬로 간주됩니다. 이는 g의 경우이므로 g은 로컬이고 아직 정의되지 않은 것으로 간주됩니다 (if g == 0:). 당신은 전역 변수의 사용을 권장하지 않지만, 함수 내에서 전역 변수로 g을 정의하는 global g을 사용할 수 있습니다

...

+0

나에게 편집 된 코드를 주시겠습니까? –

+0

그냥 함수에'global g'를 추가하십시오 – Julien

+0

작동하지 않습니다 –