유니티 텍스쳐 생성 (Unity Texture Create from bytes)

이미지
1. RenderTexture -> Texture2D -> bytes     private void GetRenderTextureBytes()     {         // 매프레임 new를 해줄경우 메모리 문제 발생 -> 멤버 변수로 변경         Texture2D txt = new Texture2D(texture.width, texture.height, TextureFormat.RGB24, false);         RenderTexture.active = texture;         txt.ReadPixels(new Rect(0, 0, texture.width, texture.height), 0, 0);         txt.Apply();         txtBytes = txt.EncodeToPNG();     } 2. bytes -> Texture2D     private Texture2D Base64ToTexture2D(byte[] imageData)     {               int width, height;         GetImageSize(imageData, out width, out height);         // 매프레임 new를 해줄경우 메모리 문제 발생 -> 멤버 변수로 변경         Texture2D texture = new Texture2D(width, height, Tex...

유니티 네트워크 (Unity Socket with Thread) feat. Marshal

Server ----------------------------------------------- using UnityEngine; using System; using System.Collections; using System.Net; using System.Net.Sockets; using System.Threading; using UnityEngine.UI; using System.Runtime.InteropServices; public class StateObject {     public Socket workSocket = null;     public const int BufferSize = 10240;     public byte[] buffer = new byte[BufferSize];     //public StringBuilder sb = new StringBuilder(); } public struct PackData {     public int width;     public int height;     public int size;     public void GetData(byte[] bytes, Type type)     {         IntPtr buff = Marshal.AllocHGlobal(bytes.Length);         Marshal.Copy(bytes, 0, buff, bytes.Length);         object ob = Marshal.PtrToStructure(buff, type);         this = (PackData)ob;  ...

유니티 네트워크 (Unity Socket)

Server ------------------------------------------------------------ using UnityEngine; using System.Collections; using System.Net; using System.Net.Sockets; using System.Threading; using System.Text; using System.Linq; using UnityEngine.UI; public class SocketServer : MonoBehaviour {     Thread m_socketThread;     volatile bool m_keepReading = false;     Socket listener;     Socket handler;     void Start()     {         Application.runInBackground = true;         startServer();     }     void startServer()     {         m_socketThread = new System.Threading.Thread(networkCode);         m_socketThread.IsBackground = true;         m_socketThread.Start();     }     private string getIPAddress()     {         IPHostEn...

유니티 네트워크 (Unity Network)

- NetworkManager를 이용한 방법과 제한사항(대용량 전송불가)은 동일하게 발생한다. - Server using UnityEngine; using UnityEngine.Networking; public class NetServ : MonoBehaviour { void Start () {         NetworkServer.RegisterHandler(MsgType.Connect, OnConnected);         NetworkServer.RegisterHandler(MsgType.Highest+1, OnMessage);         NetworkServer.Listen(4455);     }     public void OnConnected(NetworkMessage netMsg)     {         Debug.Log("Server Call OnConnected : " + netMsg.ToString());     }     public void OnMessage(NetworkMessage netMsg)     {         Debug.Log("OnMessage l : " + netMsg.ToString().Length);         Debug.Log("OnMessage " + netMsg.ToString());     } } ------------------------------------------------------------------------------- - Client using UnityEngine; using UnityE...

유니티 네트워크 (Unity NetworkManager Component)

- 서버없이 클라이언트간 동기화(원격액션)를 통한 네트워크 통신방식을 사용 - 프로젝트를 생성한뒤 동기화에 사용할 프리팹(Network Identity)을 생성한다. - 해당 프로젝트를 복사한뒤 하나는 Server 다른 하나는 Client로 사용 (프리팹을 복사하지 않고 프로젝트를 통째로 복사하는 이유는 동기화에 Network Identity 프리팹의 에셋 아이디가 같아야 하기 때문) 1. Server, Client - Hierarchy에 빈오브젝트 생성해서 Network Manager 컴포넌트를 추가한뒤 Player prefab을 설정해준다. - 인터넷 예제에서는 Network HUD를 사용하지만 여기서는 사용하지 않고 스크립트에서 Network Manager 객체 StartServer( ), StartClient( )호출하는걸로 연결준비는 끝 2. 상태 동기화 방법( NetworkBehaviour 상속) - 클라이언트와 서버 양쪽에 같은 동기화가 지원되는 변수에 [SyncVar] 적용 - 서버  -> 클라이언트 로만 동작함 3. 원격 액션 방법( NetworkBehaviour 상속) - 같은 이름의 함수를 클라이언트와 서버의 같은 프리팹에 만들어 놓으면 원격액션기능으로 서버에서 해당함수를 호출하면 클라이언트의 해당함수가 실행되거나 그 반대로 동작하기도 한다. [Command] : 클라이언트 -> 서버 [ClientRpc] : 서버 -> 클라이언트 (확인안함) Client : NetworkClient.active가 true일때 클라이언트에서 실행 (Client-only 적용) ClientCallback : Client와 동일(경고 안나오는것만 차이) ClientRpc : 서버에서 호출 Command : 함수는 접두사 Cmd로 시작, 클라전송 서버호출 NetworkSettings : 클래스단위로 네트워크 설정구성(채널, 전송 빈도 등) Server : 서버에서 실행 (NetworkServ...