2012-08-29 1 views
1

내 게임의 리더 보드를 만들기위한 첫 걸음으로 Unity3d에서 웹 서버에 데이터를 게시하는 방법을 배우고 있습니다. 바로 지금 Unity에 매우 간단한 스크립트가있어서 내 서버에 이름과 점수를 게시합니다. PostScoreURL은 레일스 (POST로 전송 된 경우)의 작성 작업에 매핑됩니다. 그것은 매우 간단하지만 기본적인 수준에서 작동합니다.Unity3d에 의미있는 오류 메시지 제공하기 레일에서 오는 WWW.error

Unity에는 서버에 POST 할 때 사용하는 WWW 클래스가 있습니다. 이 클래스에는 오류 속성이 있지만 항상 500 내부 서버 오류가 발생합니다. 사용자가 성공적으로 작성되었거나 유효성 검증 문제점으로 인해 사용자가 작성되지 않은 경우이 오류가 발생합니다. 사용자에게 무슨 일이 일어나는지 알 수 있도록 더 의미있는 오류 메시지를 Unity에 다시 보낼 수 있도록 Rails 응용 프로그램에 추가하고 싶습니다. 예를 들어, 이미 존재하는 사용자를 만들려고하면 다른 이름을 사용해야한다는 알림을 받게됩니다. 여기

내 코드입니다 : 유니티 스크립트 : 레일 앱에서

string PostScoreURL = "http://localhost:3000/users"; 
string name = "Melanie"; 
int score = 8732; 
WWW www; 
bool requestSent = false; 

void OnGUI() 
{ 
    if (GUI.Button(new Rect(0, 0, 100, 100),"Post Score")) 
    { 
     WWWForm form = new WWWForm(); 
     form.AddField("user[name]", name); 
     form.AddField("user[score]", score); 

     www = new WWW(PostScoreURL,form); 
     requestSent = true; 
    } 

    if(requestSent && www.isDone) 
    { 
     print (www.error); 
     requestSent = false; 
    } 
} 

: user.rb : 여기

class User < ActiveRecord::Base 
    attr_accessible :name, :score 
    validates_presence_of :name, :score 
    validates_uniqueness_of :name 
end 

내 생성 조치 :

def create 
    @user = User.new(params[:user]) 
    @user.save 
end 

관련 오류 메시지를 Unity에 다시 보내고 싶습니다. 예 : 누락 된 사용자 이름, 누락 된 점수, 사용자 이름.

+0

어디에서 개발자 앱을 실행하고 계십니까? –

+0

Unity 에디터에서 방금 실행했습니다. –

답변

1

당신은 당신의 비즈니스 규칙 오류를 고려하지 않아야연결 오류, 즉로, 이러한 오류는 클라이언트에 내부 오류 코드는 "성공"응답을 반환, 서버 측에서 처리 정의되어야한다 당신에 의해.

RoR을 모르지만 응답에서 오류 코드를 정의 할 수는 있지만 내 경우에는 (RoR을 사용하지 않음) 직렬화되어 클라이언트에 반환 된 오류 코드가 포함 된 응답 클래스를 만들었습니다 . 그런 다음 WWW 클래스는 오류 코드를 확인할 파서를 호출합니다. 또한 WWW는 WWW.error에서 연결 오류를 감시합니다.

+0

네 말이 맞습니다. 연결 오류에 사용되는 WWW.error에는 비즈니스 규칙 오류가 표시되지 않습니다. 내가 그것을 뒤섞었기 때문에 설명해 주셔서 감사합니다. 지금 내가하고있는 일은 WWW.text 속성의 성공 또는 오류에 관한 메시지를 다시 보냅니다. –

관련 문제