멍멍이네 블로그

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near xxxxxxxxxxxxxxxxxx

 

아 씡.. phpMyAdmin에서 쿼리를 쓰면 되는데 php에서 적어서 불러오면 안됨;;

 

INSERT INTO table_name() VALUES() table_name안에 들어갈 컬럼이름에 `` 해줬더니 됨;;

 

아무래도 지원 자료형중 하나랑 이름이 겹쳤나봄;; 아니면 컬럼네임을 바꿔줘도 된다.

 

해결방법 1. 컬럼 네임을 바꿔준다.

             2. 컬럼 네임에 ``붙인다

 

[수정] 많이들 보시네요.. 좀 더 자세히 설명하자면. 키보드에서 Esc키 밑에 ` 있죠? 컬럼을 지칭할땐 저걸 써주고, 변수를 써줄땐 어께점 ' 을 써주는겁니다.

 

ex) $i = 100; $col="id_number" /

mysql_query("SELECT * FROM user WHERE `$col`='$id'"); -> SELECT * FROM user WHERE id_number=100;

https://www.fingerpush.com/index.jsp

간간히 영어도 보이는데 한국어 질문 문의 다되네요!

http://blog.kissoft.co.kr/

블로그 보고 처음 알았는데, 댓글 달았더니 친절하게 답변 주시네요 ㅎㅎ!

 

문의메일처는 본사이트 가서 참조하면 나오는데 그곳으로 메일 보내면 답변 준다고 댓글도 달리네요 ㅎㅎ

 

어플리케이션에 Push기능을 직접 지원해주고, 통계치도 내려주니까 참 좋은거 같아요 ㅎㅎ

사용자분들이 얼마 없어서 예제가 많이 찾기는 힘들지만 사용해보면 후회치 않는 것 같네요!!!

Coroutine에서 bool을 이용해서 대기했다가 특정조건에 사용하는방법을 알고 싶어요
제가 2일전에 Coroutine 사용했을땐
yield return (bool 자료형 변수 = false);
Debug.Log(bool 자료형 변수값 );
라고 해두면
버튼을 클릭해서 변수값을 true로 바꿔주기전엔 Debug가 안찍혔던거 같은데;
잘되길래 놔뒀다가..
이번에 쓰려고 하는데 bool 자료형 변수가 값이 false인데 자꾸 넘어가네요..(Debug도 false로 찍힙니다)
사용법이 잘못된건지..
아니면 다른 사용법좀 가르쳐주십사 합니다.

--------------------------------------------------------------------------------------------

[답변]

IEnumerator test()
{
while(조건검사)
{
yield return null;
}

실행..
}

 

p.s. 결론은.. 조건대기할거면 그냥 Update를 쓰자..

처음 coroutine을 쓸땐 yield return bool변수의 false로 놔두면 대기했다가.. true로 바꾸면 그때 시작되는거 같았는데.. 잘못봤나보다.. 아니면 가능한지.. 이글을 보시는분 아시면 댓글좀! 

NGUI로 AddChild 할때 생성되는 오브젝트에게 값을주는방법이 궁금합니다.
서로 상하위 객체로 연결하지 않고 같은 패널 내 동등한 위치로.. 동일한 이름으로 여러개 생성할 생각입니다.
SendMessage로 오브젝트의 이동방향과 생성할오브젝트의 초기위치값을 보내줬는데..
SendMessage로는 하나의 자료형만을 보낼수 있어서..
예를들면 Vector3와 int와 string의 자료형의 값들을 주고싶은데 ...
어떻게해야될까요? ㅜ

---------------------------------------------------------------------------------

[답변]

AddChild()의 리턴값이 생성된 GameObject 입니다.
GameObject를받은 후, GetComponent등으로 스크립트를 직접 가져와서 제어하시거나 하는게 낫지 않을까요.

GameObject goChild = NGUITools.AddChild(PanelObject, ChildObject);
UserScript userScript = goChild.GetComponent<UserScript>();
userScript.Initialize(v);

이런식으로..

 

p.s. NGUITools.AddChild의 return값은 GameObject형이다!

아까 질문 올렸다가 자삭했습니다.
현재 생긴 문제가 UISpriteAnimation을 이용해서 SpriteAnimation을 줬는데요..
코드로 Sprite 이름을 바꿔준다던지.. 해서 재생할 SpriteAnimation 이름을 조절했는데..
문제는 제가 Setting에서 오브젝트 크기(localScale)과 SpriteName을 바꿔주는데..
Update문이 끝나고 나서 SpriteAnimation에 의해서 이미지가 바뀌면서 오브젝트 크기가 다시 1로 돌아옵니다.
Update(){
//크기변동
}
//원래 크기로 돌아옴
Update(){
//크기변동
}
//원래 크기로 돌아옴
이렇게 됩니다..
SpriteAnimation 크기조절도 가능한지..
아님 다른 해결방법을 알고 싶습니다.
꼭 코드에서 재생할 SpriteAnimation의 이름. atlas를 바꿔야 되구요..
Unity3D + NGUI 를 사용중입니다.

------------------------------------------------------------------------------------------

 [답변]

SpriteAnimation 코드 안에서 이미지가 변경될경우..
Make pixel perfect 인가를 호출하는걸로 알고 있습니다.
요것이 sprite의 이미지의 크기를 원래의 사이즈로 만드는 함수인데요~

요녀석을 주석을 시켜 버리시거나..

애니메이션의 사이즈를 애초에 작은 사이즈로 재생을 시켜야 될 경우에는

부모 오브젝트의 사이즈를 줄이시면 될것으로 압니다~ -> 제생각..;

ex > 하이라키 계층 구조에서

빈 게임 오브젝트를 생성하셔서
ㄴ Gameobject - > scale 0.7, 0.7, 1 이런식..
ㄴ 재생될 spriteAnimation

 

p.s. UISprite 스크립트가서 자체 수정을 했는데..

이미지를 맞춰서 세팅을 하던지.. 아니면 다른사람들 말처럼.. UISprite의 MakePixelPerfect() 메소드를 수정해서 쓰자! ( 내맘대로 수정함ㅋ )

NGUI 사용하고있어서 NGUI기능 중 PlaySound를 쓰는데
Loop 이랑 Stop이 없네요ㅜㅜ
NGUI 기능 내에서 처리하고 싶은데... Loop이랑 Stop 사용방법좀 가르쳐주세요~~

 ---------------------------------------------------------------------------

[답변]

 저도 NGUI를 사용하는데~ play사운드는 사용하는데 좀 불편한거 같아서~
빈 오브젝트를 생성하고 오디오 리스너를 가지고 다니면서 씬마다 지워지지 않게끔하고
스크립트를 작성해서 사운드를 출력해주는 식으로 하고 있습니다.
그래서 오디오 Source 안에있는 loop나 Stop도 손쉽게 쓸수 있게 만들었습니다.

결론은, 저거 저도 써봤는데 별로 막 좋은거 못느껴서..
아마 스크리트를 손보시거나 새로 하나 만들어서 쓰심이 나을듯 해요 갠적으로는 그럽니다.

 

p.s. NGUITools를 뒤져서 PlaySound메소드를 들어가서 뒤져보고 질문한거였는데..

답변도 그렇고.. PlaySound는 그냥 자체 AudioSource를 이용해서 Play, Stop 해야겠당..

상위 오브젝트를 호출하는 방법 -> childObject.transform.parent

상위 오브젝트 밑에 만들기! -> childObject.transform.parent = parentObject.transform;

 

void CreateObject(){

GameObject ChildObject; // 하위오브젝트

GameObject ParentObject; // 상위오브젝트

GameObject NonObject = Instantiate(ChildObject); // 하위오브젝트 생성

NonObject.transform.parent = ParentObject.transform; // 하위오브젝트의 상위객체로 상위오브젝트를 연결

}

VSync 가 주 원인이란말 듣고 끄니까 좀 렉이 덜하는데... 밑에 사진과 같이 중간중간에 MeshCount도 증가하고.. 뛰고 하는 부분이 있는데.. 속도를 잘 모르긴 하는데.. 사진을 보면 안끊기는거처럼 보이는데 막상 실행시키면 끊김이 눈에 조금씩 보이는지라..
이동오브젝트의 스크립트를 모두 꺼버렸구요,
생성된 오브젝트는 Update에서 transform.localPosition = new Vector3()로 이동합니다.
현재 기준 오브젝트에서 화면밖까지 가는데 오브젝트가 15개정도 먹혀서.. Pool로 20개정도 만들고 미리 만들어놓고 False하고있습니다.
CPU Usage는 GfxWaitForPresent에서 거의 80~90% 먹히고,
GPU는 Draw에서 65% RenderTexture.SetActive에서 35%정도 먹힙니다;;


------------------------------------------------------------------------------------------------------

[답변 정리!]

다른 질문과 조금 동일하기때문에 정리하자면...

VSync의 설정을 바꿔주면 1차적으로 조금 줄어든다(대신 배터리 사용량이 늘어난다는 말이 있던데 정확히는 모름!)

그리고 가비지컬렉션문제와 동일한데..

동적할당을 하면서 힙메모리가 가득차기 때문에 끊김이나 툭툭튀는현상이 발생!

= new 같은건 사용을 자제하면서 특히 Update메소드에서 호출하는건 자제하도록!

public int a = 100;
이렇게 변수 선언하고나서
이 스크립트가 연결되어있는 오브젝트를 선택하고 Inspector창에서 a의 변수값을 50으로 바꾸었습니다.
그런데 그뒤로 a = 1000000으로 바꿔도 a변수가 50으로 고정되어있는데..
Inspector창에 있는 a변수값을 다시 스크립트랑 연동시키려면 어떻게해야되나요 ?
public 변수 선언하고 Inspector창에서 변환을 안하면 계속 script랑 값이 연동되다가...
inspector창에서 한번이라도 바꾸면 고정되는거.. 그걸 푸는 방법을 질문하는겁니당 ㅜㅜㅜㅜ
어떻게보면 편한데.. 어떻게보면 불편하네요;;
다른 스크립트"들"이 참조하고있어서.. private로 바꾸면 에러가 나오고..ㅜ..

--------------------------------------------------------------------------------------------

[답변 1]

가장 쉬운 두가지 방법이 있는데요.

하나는 인스펙터에서 해당 컴포넌트 우측위에 톱니바퀴아이콘 클릭해서 리셋하면 초기화됩니다.
이게 제일 편하긴한데 다른 것도 다 초기화되는 문제가 있네요.

그리고 다른 하나는 해당 변수 위에 [System.NonSerialized] 를 입력하시고 조금 기다리시면
인스펙터에서 없어집니다. 없어진거 확인하시고 [System.NonSerialized]를 지우시면 그것만 초기값 그대로 생성됩니다.

 

[답변 2]

인스펙터에 값이 있다면 private으로 바꿔서 안보여도 그 값이 우선적용 됩니다.
우선 인스펙터에서 적은 값을 지우시구요.
인스펙터에선 사용안하면서 public으로 유지하시려면 [HideInInspector] 를 변쉬위나 앞에 달아주세요.

 

p.s. 답변1은 테스트해봤는데 2는 안해봄. 1번 답변대로 하면 확실히 되긴 하는데... 쨋든 귀찮은건 마찬가지 ㅜㅜ

유니티도 불편한점이 있구나 싶은..ㅜ..

Unity3D로 프로젝트 파일 만들고 폴더에 들어가면
Asset
Library
ProjectSettings
....
있잖아요..
거기서 Library에 들어가는 것이 무엇일까요?
두명이 다른작업을 했는데 Library용량차이가 3배이상 나네요

 ------------------------------------------------------------

[답변]

 Library 폴더는 알아서 생성되는 곳입니다.
svn등으로 공유하시려면 Assets 폴더와 ProjectSettings 폴더만 공유하시면 됩니다.
결론적으로..
두 분 다, Assets/ProjectSettings 폴더만 남기고 다 지운 후 새로 유니티에서 열어보세요.

 

 

 

p.s. meterial등.. 실행하면 기본적으로 남는데.. 안쓰려고 unity3d프로젝트에서 지워도 기록(?)이 남는듯 하다..

쓸데없는 용량만 쳐묵쳐묵... 한번씩 지우자!