728x90

프로그래밍 67

[Unity] ScriptableObject의 CustomEditor가 있을 때 저장이 안 되는 문제

특정 ScriptableObject 에 CustomEditor를 선언하고 작업할 때, ScriptableObject가 저장되지 않는 경우가 있음. CustomEditor를 정의하면 직접 적용도 해줘야 하기 때문에 그런데, 아래처럼 serializedObject.ApplyModifiedProperties(); 함수를 호출해주면 됨. [CustomEditor(typeof(MyScriptableObject))] public class MyScriptableObjectEditor : Editor { public override void OnInspectorGUI() { DrawPropertiesExcluding(serializedObject, new string[] { "m_Script" }); serializ..

파이썬(Python) - 폴더 아래 소스코드 인코딩 일괄 변환 스크립트

유니티 엔진으로 개발하던 프로젝트의 소스코드가 어째서인지 어느 순간 인코딩이 바뀌어 버렸습니다. 원인은 알 수가 없는 상황. 코드는 모두 utf-8 인코딩으로 관리하고 있었는데, 갑자기 인코딩이 변경되고 코드 내에 한글이 모두 깨져있는 상황. 그래서, 일단 파이썬으로 소스코드 전체 일관 인코딩을 변경해주는 코드를 짜서 돌렸습니다. 아래는 원본 소스. 폴더 이름과 소스코드 확장자, 인코딩을 적절히 수정해서 돌리면 됩니다. 그리고 chardet 모듈을 사용하기 때문에 pip install chardet 커맨드로 chardet 모듈을 설치해야 합니다. import os import codecs import chardet # 현재 경로 아래의 scripts 폴더 내 파일들의 인코딩을 변경합니다. director..

[Unity] Unity Engine 버전업 후 에러 메시지 Error : "The type or namespace name 'Newtonsoft' could not be found"

Newtonsoft.Json.JsonConvert 를 사용하고 있었는데, 유니티 엔진(Unity Engine)버전업 후 아래와 같은 에러 메시지가 출력될 경우. "The type or namespace name 'Newtonsoft' could not be found ~ " Newtonsoft 모듈 종속성 설정이 추가되지 않았기 때문. 엔진 버전업 하면서 모듈 설정이 날아가는 모양. Packages/manifest.json 을 열어서 "dependencies" 아래에 모듈 정보를 추가해주면 됨. "com.unity.nuget.newtonsoft-json": "3.0.2" 이렇게. 저장하고 유니티 엔진 리프래쉬 한 번 해주면 끝. GitHub : Newtonsoft Json for Unity https:/..

DirectX 11 그래픽스 스터디 초급 과정 정리 노트

DirectX SDK의 API를 활용해서 GPU에 일을 시키는 방법을 구체적으로 이해 하는 것이 중요. GPU에 일을 시키려면 코드상으로 어떤 핵심 객체들이 필요한지 DX도구를 개념적으로 이해해야 함. 그래야 DX가 아닌 OpenGL, Vulkan, Metal 등 다른 RHI(Render Hardware Interface) 를 보더라도 이해할 수 있음. 필수/중요 객체와 메소드 ID3D11Device : 필요한 서브 객체들을 생성하는데 사용하는 최상위 객체. ID3D11DeviceContext : 최상위 객체인 Device로부터 생성한 서브 객체들을 설정하고 연결하는데 사용하는 Bridge성격의 객체. Context(문맥)어휘대로 이해하면 좋다. IDXGISwapChain : 접두어 DXGI~(Graph..

DirectX 11 스터디 - 텍스쳐 UV맵핑 (ShaderResourceView)

이전 노트에서 인덱스버퍼까지 다룸. 2023.09.06 - [게임 개발 자료/게임 개발 스터디] - DirectX 11 스터디 노트 - 도형 만들어보기 (Create Geometry) + 인덱스 버퍼 + 버텍스 셰이더, 픽셀 셰이더 이번엔 Shader Resource View 를 생성해서 png 텍스쳐 파일을 로드하고 버텍스컬러 대신 uv 좌표를 입력해서 폴리곤 위에 텍스쳐를 띄워본다. 1. ShaderResourceVIew 생성 / 리소스 로드 2. 셰이더 수정 3. 랜더링 함수 호출 이 순서로 진행. 1. ShaderResourceVIew 생성 / 리소스 로드 ID3D11ShaderResourceView 생성. 이 때 텍스쳐 리소스도 같이 로드. // ComPtrPSSetShader(_pixelSha..

DirectX 11 스터디 노트 - 도형 만들어보기 (Create Geometry) + 인덱스 버퍼 + 버텍스 셰이더, 픽셀 셰이더

Vertex 구조체를 만들어 Vertex Data 를 구성하고, ID3D11Buffer 를 생성해서 ID3D11Device 의 CreateBuffer 함수로 VertexBuffer 를 만들어준다. void Game::CreateGeometry() { // VertexData { _vertices.resize(3); _vertices[0].position = Vec3(-0.5f, -0.5f, 0.f); _vertices[0].color = Color(1.f, 0.f, 0.f, 1.f); _vertices[1].position = Vec3(0.f, 0.5f, 0.f); _vertices[1].color = Color(0.f, 1.f, 0.f, 1.f); _vertices[2].position = Vec3(0..

MSB8020 Error v143에 대한 빌드 도구를 찾을 수 없습니다. 해결법

오류 MSB8020 v143에 대한 빌드 도구(플랫폼 도구 집합 = 'v143')를 찾을 수 없습니다. v143 빌드 도구를 사용하여 빌드하려면 v143 빌드 도구를 설치하십시오. [프로젝트] 메뉴를 선택하거나 솔루션을 마우스 오른쪽 단추로 클릭한 다음 "솔루션 대상 변경"을 선택하여 현재 Visual Studio 도구로 업그레이드할 수도 있습니다. 설치된 플랫폼 도구 집합과 프로젝트의 설정이 달라서 생기는 문제. 설치된 플랫폼 도구 집합으로 변경해주거나, 프로젝트 설정을 변경해서 해결해주면 됨. 프로젝트 속성 > 일반 탭으로 이동. 플랫폼 도구 집합 드롭다운 받스를 눌러서 변경. 이렇게 변경하고 다시 빌드 해보면 성공.

소수점 연산 오차 관련 (Epsilon, Approximately, IsNearlyEqual)

컴퓨터는 0과 1, 즉 2진수로 숫자를 처리. 실수의 소수점 숫자를 2진수로 정확히 표현할 수 없는 경우가 있기 때문에(비트가 무한히 반복) 소수점 연산을 할 때에는 미세한 오차가 발생할 수 밖에 없음. 예시를 보면 // C# using System; class Program { static void Main() { float num1 = 0.1f; float num2 = 0.2f; float sum = num1 + num2; Console.WriteLine("Sum: " + sum); } } // C++ #include int main() { float num1 = 0.1f; float num2 = 0.2f; float sum = num1 + num2; std::cout

C# 리플렉션(Reflection) 개념잡기

C#에서 리플렉션(Reflection) 기능은 프로그램이 런타임 중에 동적으로 객체의 타입 정보를 획득해서 접근하고 활용할 수 있는 기능. 리플렉션은 주로 System.Reflection 네임스페이스 내의 기능들을 사용하여 런타임에 타입 정보를 동적으로 검사하거나 조작하는 것. GetType() 메서드는 객체의 런타임 타입을 가져오는 것으로, 이것도 정적인 타입 정보를 가져오는 것이므로 일반적으로는 리플렉션을 사용했다고 보기 어렵. System.Reflection 네임스페이스의 기능을 사용하는 경우에야 리플렉션을 사용한 것으로 간주하며, typeof 연산이나 GetType() 메서드는 해당 범주에 포함되지 않는 것으로 볼 수 있음. 왜 이름이 리플렉션(Reflection)일까? C#의 리플렉션(Refle..

친절한 엔지니어링 <Kind Engineering> How To Engineer Kindness by Evan Smith

에 대한 글과 영상 강의입니다. 영상은 아래 링크. https://www.youtube.com/watch?v=wTezaqqyzlk 친절하게 대할 때 얻을 수 있는 이점에 대해서만 설명합니다. 이 글의 나머지 부분에서는 실용적인 조언과 팁을 통해 친절하게 응대하고 친절을 장려하는 방법에 대해 더 자세히 설명. 0. 친절이란 무엇인가요? 1. 정직 2. 비동기 커뮤니케이션: 코드 리뷰 3. 심리적 안전 4. 피드백/비판 5. 추가 읽기 6. 결론 What Is Kindness? 이 뭘까요? 은 다른 사람에게 투자하고, 그들을 도울 방법을 찾고, 그들이 있는 곳에서 만나는 것. 친절은 상대방의 입장에서 생각하고 상대방의 감정과 배경을 고려하여 도움을 주려고 노력하는 것입니다. 사람마다 친절에 대한 정의는 다르..

728x90
반응형