private AudioSource GetEmptySource()//비어있는 오디오 소스 반환
{
int lageindex = 0;
float lageProgress = 0;
for (int i = 0; i < SFXsource.Length; i++)
{
if (!SFXsource[i].isPlaying)
{
return SFXsource[i];
}

//만약 비어있는 오디오 소스를 못찿으면 가장 진행도가 높은 오디오 소스 반환

float progress = SFXsource[i].time / SFXsource[i].clip.length;
if(progress > lageProgress)
{
lageindex = i;
lageProgress = progress;
}
}
return SFXsource[lageindex];
}


복붙하면 배경이랑 글자색도 그대로 따라옴 

그래도 컬러스트립터가 더 좋은듯

블로그 이미지

stuban

ㅇ.ㅇ

,

출처&글 : http://blog.coderifleman.com/2016/12/30/bezier-curves/

 

1차 베지어 곡선

 

2차 베지어 곡선

 

3차 베지어 곡선

 

블로그 이미지

stuban

ㅇ.ㅇ

,

유니티에서 코딩하면서 가장 좋아하는 기능중에 하나였던거 같다.

물론 유니티가 아니라 c#에서 쓰는거지만 어차피 난 유니티만 쓰니깐 유니티에서 쓰는법을 쓸거임


참고로 옛날에 썻던 네이버 블로그에 있던거 그대로 복붙함


c#에서 지원하는 xmlDocument클래스를 써서 xml데이터를 읽어올수 있는데

유니티에서 인스펙터로 끌어서 가지고 오려면 유니티에서 지원하는 TextAsset를 사용하면 된다.

물론 Resource.Load나 파일입출력으로 가지고 올 수도 있다.


아래는 랜덤한 철수를 뽑아오는 클래스다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
using System.Xml;//xml 네임스페이스 using하기
 
public class XMLTEST : MonoBehaviour {
 
    [SerializeField]
    private TextAsset xmlTxt;//텍스트 에셋으로 가지고온 xml파일
    private XmlDocument xmlDoc;//텍스트로 가져온 파일을 xml도큐먼트로 변환
    private void Start ()
    {
        //text를 XmlDocument에 맞게 변환
        xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlTxt.text);
 
        Debug.Log(getName());
    }
    
    public string getName()
    {
        XmlNodeList nodes = xmlDoc.SelectNodes("Name/familyName/name");//랜덤한 성씨
        string name = nodes[Random.Range(0, nodes.Count)].InnerText;
        name += xmlDoc.SelectSingleNode("Name/lastName/name").InnerText;//하나의 이름
 
        return name;//이름 출력
    }
}
 
cs


xml 파일은 이렇게 되어있다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8" ?>
<Name>
  <familyName>
    <name></name>
    <name></name>
    <name></name>
    <name></name>
    <name></name>
    <name></name>
    <name>안</name>
    <name>조</name>
  </familyName>
  
  <lastName>
    <name>철수</name>
  </lastName>
</Name>
 
cs


System.Xml의 msdn 문서 : https://msdn.microsoft.com/ko-kr/library/system.xml(v=vs.110).aspx

XML에 대한 위키문서 : https://ko.wikipedia.org/wiki/XML 


블로그 이미지

stuban

ㅇ.ㅇ

,

유니티에서 좀 복잡한 데이터를 저장하고 싶을때 사용하면 좋은것

직렬화라는 기술인데 원리는 잘모르겠고 

이건 내가 옛날에 인터넷에서 언젠가 봐놓고 프로젝트에 썻던 코드를 예제처럼 꾸며놓은거다.

좀 무겁다고는 하는데 어차피 세이브를 프레임마다 하는건 아니니깐,,,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
//직렬화를 위한 네임스페이스들
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
 
[Serializable] // 직렬화할 클래스는 위에 이걸 써야함
public class Data
{    
    //클래스 안에 들어가는 데이터에 다른 클래스가 들어갈때는 그 클래스도 직렬화가능한 클래스 여야함(Vector 같은거 안됨)
    public string bang;    
    public int game;
    public bool right;
}
 
public class SaveMng : MonoBehaviour
{
 
///*
//
//*/
 
    public void Save(Data data)//세이브
    {
        BinaryFormatter bf = new BinaryFormatter();
        MemoryStream ms = new MemoryStream();
        bf.Serialize(ms, data);
        
        string result = Convert.ToBase64String(ms.GetBuffer();
        PlayerPrefs.SetString("save", result);//변환해서 playerPrefs에 저장
    }
 
    public Data Load()//로드
    {
        Data data=null;
        string save = PlayerPrefs.GetString("save",null);
        
        if (!string.IsNullOrEmpty(save))//
        {
            var binaryFormatter = new BinaryFormatter();
            var memoryStream = new MemoryStream(Convert.FromBase64String(save));
            
            data = (Data)binaryFormatter.Deserialize(memoryStream);//형변환해서 사용
        }
        return data;
    }
}
cs


참고로 직렬화된 결과는 이런식으로 나옴

AAEAAAD/////AQAAAAAAAAAMAgAAAA9Bc3NlbWJseS1DU2hhcnAFAQAAAAREYXRhAwAAAAJkeQRnY

W1lBHN1Y2sBAAAIAQIAAAAKAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

블로그 이미지

stuban

ㅇ.ㅇ

,

이렇게 된 스프라이트 시트 Resources.Load로 가지고 오기

1
2
Object[] sprites = Resources.LoadAll("baseBallBoyWooden");
sprRen.sprite = sprites[2as Sprite;

cs

배열의 첫번째는 나누기 전 모습 그 후부터는

배열에 담긴 순서대로 사용 ㅇㅇ


블로그 이미지

stuban

ㅇ.ㅇ

,

마우스 커서를 고정하는 방법이 Screen.LockCursor 인줄 알았는데 바뀌었는지 뭔지는 몰라도 변수가 없길래 다시 찾아보니 다른 방법이 있었다


1
2
Cursor.lockState = CursorLockMode.Locked;//마우스 커서 고정
Cursor.visible = false;//마우스 커서 보이기
cs


블로그 이미지

stuban

ㅇ.ㅇ

,

마인크래프트 비슷한 거를 만들고 싶어서 구글링하던 중 마인크래프트의 c0.30_01c 버전을 디 컴파일한 소스를 분석한 글을 발견했습니다.


영어가 안돼서 구글번역 돌려서 봤는데 번역기가 이상한 것인지 글쓴이가 이상한 것인지 아니면 내머리가 이상한지...

이해는 덜 돼도 꽤 재미있는 이야기가 많이 있더군요.



https://github.com/UnknownShadow200/ClassicalSharp/wiki/Minecraft-Classic-map-generation-algorithm






블로그 이미지

stuban

ㅇ.ㅇ

,


참고로 mssql 기준임 다른 관리시스템이랑은 다를 수 도 있음



이진 문자열 : 멀티미디어 자료를 담기위한 자료형 음성, 사진같은 것을 이진 문자열로 관리한다.

참조 : https://goo.gl/nhPaHI


전역 고유식별자(GUID) https://goo.gl/CIqhQ7

'프로그래밍 > SQL' 카테고리의 다른 글

오늘 새로배운 mysql 정리  (0) 2017.10.12
sql 메모  (0) 2017.10.11
apmSetup  (0) 2017.10.11
SQL 정리 - 1 테이블 생성과 수정  (0) 2017.05.17
sql 정리  (0) 2017.05.17
블로그 이미지

stuban

ㅇ.ㅇ

,