Unity WebGL x IoT ~ 스마트 잠금을 만들었습니다 ~ NCMB 편

11925 단어 NCMBWebGLUnity

소개



어떤 사정이 있고, 스마트 락 원한다. 스마트 잠금 슈퍼 편리. 만들자. 되었기 때문에 만들었습니다만. 다양한 함정을 밟았으므로 그것을 써 갑니다. 덧붙여 대량으로 함정을 밟은 이유는 이하와 같은 이상한 구성으로 했기 때문입니다. (이 구성으로 한 이유는 위에서 "빨리 만들어라"라는 압력과 내 스킬)


in Unity WebGL (on Editor)



우선, 나는 Unity에서 움직이도록 만들었습니다. 거기서 디버그를 하면, 니프티 클라우드 모바일 백엔드(NCMB)로 함정을 밟았습니다. NCMB는 데이터베이스 기능 만 사용합니다.

NCMB에서의 함정



기본적으로 NCMB는 우수합니다. 사용하기 쉽고, 일본어로 샘플이나 자료도 풍부하고, 무료 테두리도 충분합니다. 게다가 Unity 용 애셋 중에서도 드물게 WebGL에서도 사용할 수 있습니다. 그러나 약간의 함정도있었습니다.

함정 1 : NCMBSetting.cs에 연결 GameObject



NCMB의 공식 문서 에서는 다음과 같이 되어 있습니다.
  • 빈 Game Object를 생성합니다.
  • 명확하게하기 위해, 생성한 Game Object를 여기서는 "NCMBSettings"라는 이름으로 변경합니다.
  • 가져온 "NCMB"폴더에있는 "NCMBSettings.cs"를 방금 만든 "NCMBSettings"에 드래그 앤 드롭으로 연결하십시오.


  • 라고 하는 것으로 나는 「이름을 알기 쉽도록 바꾸는… 이것이 실수였습니다.
    어쩐지 움직이지 않았기 때문에 로그를 보면, 다음과 같은 에러가 나왔습니다.
    NullReferenceException: Object reference not set to an instance of an object
    NCMB.Internal.NCMBConnection+<_Connection>d__29.MoveNext () (at Assets/NCMB/Script/NCMBConnection.cs:136)
    

    그래서 해당 코드를 보면 다음과 같이 되어 있었습니다.

    Assets/NCMB/Script/NCMBConnection.cs
    133    private void _Connection(object callback)
    134    {
    135        GameObject gameObj = GameObject.Find("NCMBSetting");
    136        NCMBSettings settings = gameObj.GetComponent<NCMBSettings>();
    137        settings.ConnectionAsync(this, callback);
    138    }
    

    다메쨩. NCMBSetting.cs를 첨부한 객체의 이름이 NCMBSetting이 아니면 안됩니다. (혹은 이 코드를 바꿀까.) 좀 더 강한 말을 하고 싶었다.

    함정 2 : 저장할 문자열



    NCMB의 데이터스토어에 정보를 저장하려고 하면 일부 데이터가 에러를 돌려받는다. 여러 번 시도하는 동안 문자열에 =가 공통적으로 포함되어 있음을 알았습니다. 확실히 수상하다. 라고 생각했으므로, 인코딩을 하고 있는 곳을 개량했습니다.
    무엇을 했는가 하면, a~z, A~Z만 그대로 보내, 다른 문자는 이스케이프 하도록(듯이) 하고 있습니다. 개량 전은 z~A도 그대로 보냈던 것 같다. (데이터는 URL 인코딩되어 송신·수신하는 것 같다)

    Assets/NCMB/Script/MiniJSON.cs
    505     void SerializeString (string str)
    506     {
    507             builder.Append ('\"');
    508             
    509             char[] charArray = str.ToCharArray ();
    510             foreach (var c in charArray) {
    511                 switch (c) {
    512                 case '"':
    513                     builder.Append ("\\\"");
    514                     break;
    515                 case '\\':
    516                     builder.Append ("\\\\");
    517                     break;
    518                 case '\b':
    519                     builder.Append ("\\b");
    520                     break;
    521                 case '\f':
    522                     builder.Append ("\\f");
    523                     break;
    524                 case '\n':
    525                     builder.Append ("\\n");
    526                     break;
    527                 case '\r':
    528                     builder.Append ("\\r");
    529                     break;
    530                 case '\t':
    531                     builder.Append ("\\t");
    532                     break;
    533                 default:
    534                     int codepoint = Convert.ToInt32 (c);
    ----------------------------------------------------------------------------
    535 --                  if ((codepoint >= 32) && (codepoint <= 126)) {
    535 ++                  if (((codepoint >= 65) && (codepoint <= 90)) || ((codepoint >= 97) && (codepoint <= 122)))
    ----------------------------------------------------------------------------
    536                         builder.Append (c);
    537                     } else {
    538                         builder.Append ("\\u");
    539                         builder.Append (codepoint.ToString ("x4"));
    540                     }
    541                     break;
    542                 }
    543             }
    544             
    545             builder.Append ('\"');
    546         }
    
    

    함정 3 : WhereContainedIn 등을 사용할 수 없다



    증상이나 해결법이 모두 이 기사에 걸렸습니다. 그래서 거의 생략합니다. 다만, 코드의 해당 범위가 알기 어려웠기 때문에 행수만 쓸 때입니다. 772・773行目 부근입니다.

    The next is...



     
    음, 점점 다음에 갑니다. 다음은 Unity WebGL편입니다.

    시리즈 일람


  • NCMB 편 ← 지금 여기
  • Unity WebGL편
  • WebHook편

  • 라즈파이편
  • 좋은 웹페이지 즐겨찾기