2016.01.11 14:10

유니티에서 ui를 클릭 혹은 터치해도 게임 중 입력 이벤트를 처리하는 부분에서 계속 문제가 발생했다. 


게임 ui를 유니티의 ui로 만들지 않았을때는 몰랐는데, 이거 어떻게 처리해야 할지 한동안 고민이 많았는데...


EventSystem.current.IsPointerOverGameObject 라는 함수가 있는지 몰라서 한참 고생했네;;


아래와 같은 클래스를 하나 추가해서 처리.

using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;

public class InputEventManager : MonoBehaviour {
     public bool GetMouseDown(int _idx){
        if (EventSystem.current.IsPointerOverGameObject())
            return false;

        return Input.GetMouseButtonDown(_idx);
    }

    public bool GetMouseUp(int _idx){
        if (EventSystem.current.IsPointerOverGameObject())
            return false;

        return Input.GetMouseButtonUp(_idx);
    }

    public bool GetMouse(int _idx){
        if (EventSystem.current.IsPointerOverGameObject())
            return false;

        return Input.GetMouseButton(_idx);
    }

    static InputEventManager mInst;
    public static InputEventManager Inst {
        get{
            if (mInst == null) {
                GameObject go = new GameObject ();
                go.name = "InputEventManager";
                mInst = go.AddComponent<InputEventManager> ();
            }
            return mInst;
        }
    }
}




이전 버전에서는 IsPointerOverEventSystemObject  라는 이름으로 쓰였는데, 이름이 조금 달라져서 애매한데, 일단 잘 작동은 하는 듯. 

저작자 표시 비영리 동일 조건 변경 허락
신고
2015.12.31 11:50

게임 다 만들고, google play에 프로젝트 등록하고 로그인을 해봤는데 마지막 로그인에서 계속 fail뜸. 


원인을 찾던 중 로컬에 등록한 keystore의 값을 google play api 관리자에 등록을 안 해서 발생한 문제였음. 


아래 이미지 중 붉은 테두리 안에 keystore에 등록된 sha1 값을 등록해야 함.


(keytool -list -v -keystore "자신이 등록한 keystore 이름" 을 입력하면 sha1 값을 볼 수 있다.)



저작자 표시 비영리 동일 조건 변경 허락
신고
2015.11.10 10:35

이미지에서 처럼, ragdoll 물리객체가 저 멀리 날아가고 있다. 


이는 spine 3.0 미만 버전에서 발생하는데.. 


spine ragdoll을 적용할 객체의 scale이 1.0 미만일 경우 이 현상이 발생한다.




Hierarchy에서는 스케일을 1로 고정하고, spine에서 출력된 skeletonData의 스케일을 조정하면 문제없음.






저작자 표시 비영리 동일 조건 변경 허락
신고
2015.09.10 17:50

facebook, google, tapjoy 세 개를 합쳐서 샘플 프로젝트를 작성중에 아래 같은 에러가 발생!!


Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.

C:\Program Files (x86)\Android\android-sdk\build-tools\22.0.1\aapt.exe package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S "res" -I "C:/Program Files (x86)/Android/android-sdk\platforms\android-23\android.jar" -F bin/resources.ap_ --extra-packages com.facebook.android:com.google.android.gms:com.google.example.games.mainlibproj -S "E:\Facebook Sample\Temp\StagingArea\android-libraries\facebook\res" -S "E:\Facebook Sample\Temp\StagingArea\android-libraries\google-play-services_lib\res"


png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-mdpi-v4\ic_plusone_small_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-hdpi-v4\ic_plusone_small_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-xhdpi-v4\ic_plusone_small_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-xxhdpi-v4\ic_plusone_small_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-mdpi-v4\ic_plusone_standard_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-hdpi-v4\ic_plusone_standard_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-xhdpi-v4\ic_plusone_standard_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-xxhdpi-v4\ic_plusone_standard_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-mdpi-v4\ic_plusone_tall_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-hdpi-v4\ic_plusone_tall_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-xhdpi-v4\ic_plusone_tall_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-xxhdpi-v4\ic_plusone_tall_off_client 1.png: Invalid file name: must contain only [a-z0-9_.]

res\drawable-mdpi-v4\powered_by_google_dark 1.png: Invalid file name: must contain only [a-z0-9_.]

.

.

.

.

아래 스샷 처럼 에러 발생!


해당 폴더로 가봤더니 같은 이름의 파일들이 복사되면서 들어가면 안될 빈칸이 들어감.



tapjoy 패키지를 설치하면 Assets\Plugins\Android\google-play-services_lib 폴더가 존재함. 구글 패키지가 두개가 존재하게 되어, 빌드할 때 같은 리소스를 복사해 에러가 발생한다.


tapjoy 패키지를 import 할 때 샘플과 google play service lib를 제외하고 import 받으면 해결됨. 


tapjoy 서포터분들의 빠른 답변 감사합니다. :)


저작자 표시 비영리 동일 조건 변경 허락
신고
2015.08.27 19:49

Facebook Unity SDK 6.0 을 받아 패키지를 설치하고, 샘플을 돌려보는데 아래와 같은 에러가 발생


Could not securely load assembly from 

https://integrated-plugin-canvas-rsrc.fbsbx.com/rsrc/unity/lib/sdk_6.0/CanvasFacebook.dll


FB.cs 파일 line 411에 전처리기 "#if UNITY_4_5" 를 찾아 그 뒤에 " || UNITY_4_6 || UNITY_5_0 || UNITY_5" 를 붙여줄 것! 현재 버전 define만 붙여도 됨.




http://forum.unity3d.com/threads/facebook-sdk-assembly-cannot-be-loaded.264126/


커뮤니티에서 해결책을 찾았는데, 불편하게 개발자가 꼭 수정해야 되나 --; 


배포 버전 수정해서 올려주면 좋을텐데 --

저작자 표시 비영리 동일 조건 변경 허락
신고
2015.08.26 17:38

Putty로 접속하기


http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html



EC2에 파일 업로드하기


http://arisu1000.tistory.com/27557

저작자 표시 비영리 동일 조건 변경 허락
신고
2015.08.26 16:46

윈도우의 경우 레지스트리에 저장함. 


HKEY_USERS/S-숫자와-로 이루어짐-Pc마다다름/Software/SimonTatham/Putty/SshHostKeys


안에 저장값이 포함되어 있으며, ip가 key에 포함되어 있어 쉽게 찾을 수 있다. 


필요한 키만 삭제하고 다시 접속을 시도할 수 있음.

저작자 표시 비영리 동일 조건 변경 허락
신고
2015.08.21 16:21

foreach (DictionaryEntry item in abTable) {

Debug.Log (" key = " + item.Key );

//    value값 정리

abTable.Remove(item.Key);

}


위처럼 사용할 경우 foreach에서 계속 참조하기 있기 때문에, "Hashtable.Enumerator: snapshot out of sync."와 같은 에러가 발생한다.


foreach 문 안에서의 키 삭제는 문제가 될 수 있으니, value값 정리와 리스트에서의 정리 처리는 분리해야 한다. 


일괄 삭제의 경우 아래와 같이..


foreach (DictionaryEntry item in abTable) {

Debug.Log (" key = " + item.Key );

//    value값 정리

}

   abTable.Clear();


필요한 값만 정리한다면.. 삭제할 키 리스트르를 중심으로 해당 값만 Remove 처리할 것!

저작자 표시 비영리 동일 조건 변경 허락
신고
2015.08.18 18:29

iis 서버에서는 mime에 정의되지 않은 확장자에는 접근할 수 없다.



iis 관리자에서 설정하고자 하는 사이트를 선택한다. 그리고 메뉴 중 MIME 형식을 클릭하여 관리창을 연다.




그리고 위처럼 추가하려는 확장자를 등록하고, 적절한 형식을 지정한다. 


이제 해당 주소로 접근하면 원하는 파일을 다운 받을 수 있다.




저작자 표시 비영리 동일 조건 변경 허락
신고
2015.08.14 15:38

* 정적으로 사용된 리소스

 : 특정 씬에 포함된 리소스는, 빌드 시 해당 씬을 포함하면 배포되는 기본 파일에 포함됩니다.


* 동적으로 사용된 리소스

 : 동적으로 로딩되는 리소스는 아래 몇가지 방식으로 동적 로딩을 진행할 수 있습니다.

 1. Resources 라는 폴더명을 만들어 리소스를 넣어두면 기본 파일에 포함됩니다. Resources.Load 함수로 동적 로딩 할 수 있습니다

 >> Resources 폴더는 여러개를 만들어 사용할 수 있습니다. 추후 이 폴더명 안에 있는 리소스들은 빌드 시 하나로 합쳐지는데, 같은 파일명이 있으면 문제가 됩니다. 파일명이 중복되지 않도록 주의하시기 바랍니다.

 >> AssetBundle 파일을 이곳에 넣어둘 수 있습니다. AssetBundle.CreateFromFile 함수로 동적 로딩 할 수 있습니다. 좋은 방법은 아닙니다. 이러지 마세요 !!


 2. SteamingAssets에 넣어두면 기본 파일에 포함됩니다. WWW로 로딩 가능합니다. 만약 AssetBundle 파일들을, 게임 설치 후 초기 다운로드가 아닌 바로 실행 가능하게 하려면 이 폴더에 AssetBundle 파일을 넣어두는 방법을 추천합니다. 


 3. AssetBundle 파일로 만든 후, 게임 실행 시 혹은 게임 중 필요할 때 WWW로 다운로드/로딩 가능합니다.


끝!!!

저작자 표시 비영리 동일 조건 변경 허락
신고