3월, 2017의 게시물 표시

[Godot Engine] Unable to write to file xxx.tscn, file in use, locked or lacking permissions.

이미지
고도엔진에서 스크립트 수정 후 저장하는데 아래와 같은 에러가 발생했습니다.

Unable to write to file xxx.tscn, file in use, locked or lacking permissions.


제 경우 재현 상황은 아래와 같습니다.

1. 스크립트가 에러가 발생 될 상황이었음(extends Node2Dt로 인해)
2. F5를 눌러 프로젝트를 실행해서 Parse Error: unknown class: 'Node2Dt' 가 발생
3. 소스를 수정 후 Ctrl + S를 눌러 저장을 시도 했을 때 로드 에러가 발생
4. 씬 실행을 정지(F8) 한 후 파일을 저장하면 이상 없음

이렇습니다. 조금씩 적응중인 고도 엔진이네요.

[Godot Engine] Parser Error: expected string constant as 'preload' argument.

고도 엔진으로 스크립트를 작성중 아래와 같은 에러가 발생했습니다.

expected string constant as 'preload' argument.

for i in range(ImageCount):
var spr = Sprite.new()
var imageName = "image" + str(i)
var resName = "res://image/" + imageName + ".png"
spr.set_texture(preload(resName))

스프라이트 객체를 생성하고 텍스처를 설정해주는 부분에서 preload관련 에러였습니다. 프로젝트 시작할 때 스크립트 컴파일 타임에 preload가 실행이 되서 인수로 문자열 상수를 사용해야하는 것 같네요. preload 대신 load를 사용해주면 됩니다.

https://github.com/godotengine/godot/issues/1758
https://godotengine.org/qa/6142/preload-with-variable-argument
https://godotdevelopers.org/forum/discussion/14486/solved-expected-string-constant-as-preload-argument-am-i-doing-this-right

[Godot Engine] Invalid operands 'String' and 'int' in operator '+'.

Invalid operands 'String' and 'int' in operator '+'.

고도엔진 디버깅중 위와같이 에러가 발생했습니다. 소스를 보면

for i in range(ImageCount):
var spr = Sprite.new()
var imageName = "image" + i

단순히 for 문을 돌면서 imageName을 동적으로 만들어주려고 했던 부분에서 발생했습니다. c#처럼 스트링에 + 연산자로 바로 int형을 지원해주지는 않는 것 같습니다.

var imageName = "image" + str(i)

이렇게 GDScript가 지원하는 str함수를 사용해주면 잘 되네요. GDScript를 정식으로 공부하지 않고 막 짜다보니 이런 에러도 발생하네요.

String str( Variant what, Variant ... )
Convert one or more arguments to strings in the best way possible.

[Godot Engine] 만들어 놓고 방치하고 있던 게임 샘플로 공개합니다.

이미지
약 2년전에 고도 엔진으로 틈틈히 만들어본 짱깽뽀 게임입니다. 리소스를 당시에 어디서 구했는지 기억이 안나네요. 다 만들면 리소스 바꿔서 출시하려고 했는데 출시는 저 멀리 안드로메다로 가버렸네요. 아무튼 사운드는 정말 추억의 짱깽뽀더군요.

아래는 플레이 영상입니다.

허접한 소스이지만 공유합니다. 아래 링크에 있습니다.
https://github.com/WestwoodForever/Rock_Paper_Scissors

고도 엔진 쇼케이스에도 등록이 되었습니다.