'분류 전체보기'에 해당되는 글 103건
- 2016.02.22 [Unity3D] 플랫폼별 의존 컴파일 방법
- 2016.02.19 [Unity3D] XML로 데이터 저장, 불러오기
- 2016.02.19 [Unity3D] 코드에서 사용하는 Attributes 설명 모음
플랫폼 의존 컴파일
Unity는 “플랫폼 의존 컴파일”이라는 기능이 있습니다. 여기에는 몇 가지 전 처리기 지시문이 포함되어, 스크립트를 ’파티션화’하여 코드의 일부 섹션을 지원하는 하나의 플랫폼 독점적으로 실행할 수 있게 됩니다.
또한 코드를 에디터 내에서 실행할 수 있기 때문에, 코드를 모바일/콘솔에 대해 컴파일 한 후 에디터에서 테스트할 수 있습니다.
플랫폼 매크로 정의
Unity 스크립트에서 지원하는 플랫폼 매크로 정의 :
프로퍼티: | 기능: |
---|---|
UNITY_EDITOR | Unity 스크립트에서 지원하는 플랫폼 매크로 정의 : |
UNITY_EDITOR_WIN | Windows에서의 플랫폼 정의 에디터 코드. |
UNITY_EDITOR_OSX | Mac OSX에서의 플랫폼 정의 에디터 코드. |
UNITY_STANDALONE_OSX | Mac OS (Univeral, PPC 및 Intel 아키텍처 포함) 의 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의. |
UNITY_STANDALONE_WIN | Windows 독립 실행형 응용 프로그램 코드를 컴파일 / 실행하고 싶을 때 사용합니다. |
UNITY_STANDALONE_LINUX | Linux 독립 실행형 응용 프로그램 코드를 컴파일 / 실행하고 싶을 때 사용합니다. |
UNITY_STANDALONE | 모든 독립 실행형 응용 프로그램(Mac, Windows 또는 Linux)의 코드를 컴파일 / 실행하고 싶을 때 사용합니다. |
UNITY_WEBPLAYER | Web Player 콘텐츠(Windows 및 Mac Web Player 실행 파일을 포함합니다) 플랫폼 매크로 정의. |
UNITY_WII | Wii 콘솔 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의. |
UNITY_IOS | iOS 플랫폼에서 코드 컴파일/실행을 위한 플랫폼 매크로 정의 |
UNITY_IPHONE | Deprecated. Use UNITY_IOS instead. |
UNITY_ANDROID | Android 플랫폼의 플랫폼 매크로 정의. |
UNITY_PS3 | PlayStation 3에서 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의. |
UNITY_PS4 | PlayStation 4에서 코드 컴파일 / 실행을 위한 플랫폼 매크로 정의. |
UNITY_XBOX360 | XBox 360 코드의 컴파일 / 실행을 위한 플랫폼 매크로 정의. |
UNITY_XBOXONE | XBox One 코드의 컴파일 / 실행을 위한 플랫폼 매크로 정의. |
UNITY_BLACKBERRY | Blackberry10 장치를 위한 플랫폼 매크로 정의. |
UNITY_TIZEN | Android 플랫폼의 플랫폼 매크로 정의. |
UNITY_WP8 | Windows Phone 8 플랫폼 매크로 정의. |
UNITY_WP8_1 | Windows Phone 8.1 플랫폼 매크로 정의. |
UNITY_WSA | Platform define for Windows Store Apps (additionally NETFX_CORE is defined when compiling C# files against .NET Core). |
UNITY_WSA_8_0 | SDK 8.0을 타케팅했을 때의 Windows Store Apps 플랫폼 매크로 정의. |
UNITY_WSA_8_1 | SDK 8.1을 타케팅했을 때의 Windows Store Apps 플랫폼 매크로 정의. |
UNITY_WSA_10_0 | Platform define for Windows Store Apps when targeting Universal Windows 10 Apps (additionally WINDOWS_UWP and NETFX_CORE is defined when compiling C# files against .NET Core). |
UNITY_WINRT | Equivalent to UNITY_WP8 | UNITY_WSA. |
UNITY_WINRT_8_0 | Equivalent to UNITY_WP8 | UNITY_WSA_8_0. |
UNITY_WINRT_8_1 | Equivalent to UNITY_WP_8_1 | UNITY_WSA_8_1. It’s also defined when compiling against Universal SDK 8.1. |
UNITY_WINRT_10_0 | Same as UNITY_WSA_10_0 |
UNITY_WEBGL | WebGL 플랫폼 매크로 정의. |
UNITY_ANALYTICS | Unity 스크립트에서 지원하는 플랫폼 매크로 정의 : |
또한 작업을 하고 있는 Unity 엔진 버전에 따라 코드를 선택적으로 컴파일할 수 있습니다. 현재 지원되고 있는 것은 :
UNITY_2_6 | Unity 2.6 버전의 플랫폼 매크로 정의. |
UNITY_2_6_1 | Unity 2.6.1 버전의 플랫폼 매크로 정의. |
UNITY_3_0 | Unity 3.0 버전의 플랫폼 매크로 정의. |
UNITY_3_0_0 | Unity 3.0.0 버전의 플랫폼 매크로 정의. |
UNITY_3_1 | Unity 3.1 버전의 플랫폼 매크로 정의. |
UNITY_3_2 | Unity 3.2 버전의 플랫폼 매크로 정의. |
UNITY_3_3 | Unity 3.3 버전의 플랫폼 매크로 정의. |
UNITY_3_4 | Unity 3.4 버전의 플랫폼 매크로 정의. |
UNITY_3_5 | Unity 3.5 버전의 플랫폼 매크로 정의. |
UNITY_4_0 | Unity 4.0 버전의 플랫폼 매크로 정의. |
UNITY_4_0_1 | Unity 4.0.1 버전의 플랫폼 매크로 정의. |
UNITY_4_1 | Unity 4.1 버전의 플랫폼 매크로 정의. |
UNITY_4_2 | Unity 4.2 버전의 플랫폼 매크로 정의. |
UNITY_4_3 | Unity 4.3 버전의 플랫폼 매크로 정의. |
UNITY_4_5 | Unity 4.5 버전의 플랫폼 매크로 정의. |
UNITY_4_6 | Unity 4.6 버전의 플랫폼 매크로 정의. |
UNITY_5_0 | Unity 5.0 버전의 플랫폼 매크로 정의. |
참고 : 2.6.0에서 처음 도입된 기능이기 때문에, 2.6.0 이전 버전에는 플랫폼 매크로 정의가 없습니다.
출처 : http://docs.unity3d.com/kr/current/Manual/PlatformDependentCompilation.html
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D] 좀더 쉬운 XML저장 방법 (0) | 2016.02.22 |
---|---|
[Unity3D] 멀티터치를 이용하여 줌인 줌아웃 구현 (0) | 2016.02.22 |
[Unity3D] 마우스 휠 적용법 (2) | 2016.02.22 |
[Unity3D] XML로 데이터 저장, 불러오기 (0) | 2016.02.19 |
[Unity3D] 코드에서 사용하는 Attributes 설명 모음 (0) | 2016.02.19 |
Save and Load Info to XML
This script will allow you to save and load data about an object into an XML file. To use, add an empty game object to the scene and attache the script to the object. Change the Player on that game object property to the item you wish to save properties about. When you start the scene, you will see a save and load button, these allow you to save and load the information from the xml file. The guts of what you save is located in the UserData class, change this as you see fit to allow you to save what you want. You will also need to update the save method to store the information that you are looking to store. At the moment, the code is only setup to store the postition of the object in world space.
===========================================================================
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 using UnityEngine;using System.Collections;using System.Xml;using System.Xml.Serialization;using System.IO;using System.Text;public class_GameSaveLoad: MonoBehaviour {// An example where the encoding can be found is at//http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp// We will just use the KISS method and cheat a little and use// the examples from the web page since they are fully described// This is our localprivate membersRect _Save, _Load, _SaveMSG, _LoadMSG;bool _ShouldSave, _ShouldLoad,_SwitchSave,_SwitchLoad;string _FileLocation,_FileName;public GameObject _Player;UserData myData;string _PlayerName;string _data;Vector3 VPosition;// When the EGO isinstansiated the Start will trigger// so we setup ourinitial values for our local membersvoid Start () {// We setup ourrectangles for our messages_Save=new Rect(10,80,100,20);_Load=new Rect(10,100,100,20);_SaveMSG=new Rect(10,120,400,40);_LoadMSG=new Rect(10,140,400,40);// Where we want to save and load to and from_FileLocation=Application.dataPath;_FileName="SaveData.xml";// for now, lets just set the name to Joe Schmoe_PlayerName = "Joe Schmoe";// we need soemthing to store the information intomyData=new UserData();}void Update () {}void OnGUI(){//***************************************************// Loading The Player...//**************************************************if (GUI.Button(_Load,"Load")) {GUI.Label(_LoadMSG,"Loading from: "+_FileLocation);// Load our UserData into myDataLoadXML();if(_data.ToString() != ""){// notice how I use a reference to type (UserData) here, you need this// so that the returned object is converted into the correct typemyData = (UserData)DeserializeObject(_data);// set the playersposition to the data we loadedVPosition=new Vector3(myData._iUser.x,myData._iUser.y,myData._iUser.z);_Player.transform.position=VPosition;// just a way to show that we loaded in okDebug.Log(myData._iUser.name);}}//***************************************************// Saving The Player...//**************************************************if (GUI.Button(_Save,"Save")) {GUI.Label(_SaveMSG,"Saving to: "+_FileLocation);myData._iUser.x=_Player.transform.position.x;myData._iUser.y=_Player.transform.position.y;myData._iUser.z=_Player.transform.position.z;myData._iUser.name=_PlayerName;// Time to creat our XML!_data = SerializeObject(myData);// This is the final resulting XML from the serialization processCreateXML();Debug.Log(_data);} }/* The followingmetods came from the referenced URL */string UTF8ByteArrayToString(byte[] characters){UTF8Encoding encoding = new UTF8Encoding();string constructedString = encoding.GetString(characters);return (constructedString);}byte[] StringToUTF8ByteArray( string pXmlString){UTF8Encoding encoding = new UTF8Encoding();byte[] byteArray = encoding.GetBytes(pXmlString);return byteArray;}// Here we serialize our UserData object of myDatastring SerializeObject(object pObject){string XmlizedString = null;MemoryStream memoryStream = new MemoryStream();XmlSerializer xs = new XmlSerializer(typeof(UserData));XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);xs.Serialize(xmlTextWriter,pObject);memoryStream = (MemoryStream)xmlTextWriter.BaseStream;XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());return XmlizedString;}// Here we deserialize it back into its original formobject DeserializeObject(string pXmlizedString){XmlSerializer xs = new XmlSerializer(typeof(UserData));MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);return xs.Deserialize(memoryStream);}// Finally our save and load methods for the file itselfvoid CreateXML(){StreamWriter writer;FileInfo t = new FileInfo(_FileLocation+"\\"+ _FileName);if(!t.Exists){writer = t.CreateText();}else{t.Delete();writer = t.CreateText();}writer.Write(_data);writer.Close();Debug.Log("File written.");}void LoadXML(){StreamReader r = File.OpenText(_FileLocation+"\\"+ _FileName);string _info = r.ReadToEnd();r.Close();_data=_info;Debug.Log("File Read");}}// UserData is our custom class that holds our defined objects we want to store in XML formatpublic class UserData{// We have to define a default instance of the structurepublic DemoData _iUser;// Default constructor doesn't really do anything at the momentpublic UserData() { }// Anything we want to store in the XML file, we define it herepublic struct DemoData{public float x;public float y;public float z;public string name;}}cs
출처
http://wiki.unity3d.com/index.php?title=Save_and_Load_from_XML
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D] 좀더 쉬운 XML저장 방법 (0) | 2016.02.22 |
---|---|
[Unity3D] 멀티터치를 이용하여 줌인 줌아웃 구현 (0) | 2016.02.22 |
[Unity3D] 마우스 휠 적용법 (2) | 2016.02.22 |
[Unity3D] 플랫폼별 의존 컴파일 방법 (0) | 2016.02.22 |
[Unity3D] 코드에서 사용하는 Attributes 설명 모음 (0) | 2016.02.19 |
AddComponentMenu : 유니티 메뉴 추가.
1 2 3 4 5 | // C# example: [AddComponentMenu("Transform/Follow Transform")] public class FollowTransform : MonoBehaviour { } | s |
ContextMenu : 우클릭 메뉴 추가.
1 2 3 4 5 6 7 8 9 10 11 12 | // C# example: public class ContextTesting : MonoBehaviour { /// Add a context menu named "Do Something" in the inspector /// of the attached script. [ContextMenu ("Do Something")] void DoSomething () { Debug.Log ("Perform operation"); } } | cs |
ExecuteInEditMode : 에디트 모드에서 스크립트 실행.
1 2 3 4 5 6 7 8 9 10 11 12 13 | using UnityEngine; using System.Collections; [ExecuteInEditMode] public class example : MonoBehaviour { public Transform target; void Update() { if (target) transform.LookAt(target); } } | cs |
HideInInspector : 인스펙터에서 속성 감추기, 이전 세팅값은 유지.
1 2 3 4 5 6 7 | using UnityEngine; using System.Collections; public class example : MonoBehaviour { [HideInInspector] public int p = 5; } | cs |
NonSerialized : 인스펙터에서 속성 감추기, 이전 세팅값은 무시.
1 2 3 4 5 6 | // C# Example class Test { // p will not be shown in the inspector or serialized [System.NonSerialized] public int p = 5; } | cs |
RPC : 원격지 호출 함수로 지정, 보내는 쪽과 받는 쪽 모두 다 존재해야 함.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using UnityEngine; using System.Collections; public class example : MonoBehaviour { public Transform cubePrefab; void OnGUI() { if(GUILayout.Button("SpawnBox")) { NetworkViewID viewID = Network.AllocateViewID(); networkView.RPC("SpawnBox", RPCMode.AllBuffered, viewID,transform.position); } } [RPC] void SpawnBox(NetworkViewID viewID,Vector3 location) { Transform clone; clone = Instantiate(cubePrefab, location, Quaternion.identity) as Transform as Transform; NetworkView nView; nView = clone.GetComponent<NetworkView>(); nView.viewID = viewID; } } | cs |
RequireComponent : 컴포넌트 자동 추가.
1 2 3 4 5 6 7 | [RequireComponent (typeof (Rigidbody))] public class PlayerScript : MonoBehaviour { void FixedUpdate() { rigidbody.AddForce(Vector3.up); } } | cs |
Serializable : 인스펙터에 인스턴스의 하위 속성 노출.
1 2 3 4 5 6 7 8 9 10 11 12 | // C# Example [System.Serializable] class Test { public int p = 5; public Color c = Color.white; } class Sample : MonoBehaviour { public Test serializableObj; // 인스펙터에 p, c가 노출된다. } | cs |
SerializeField : 인스펙터에 비공개 멤버 노출.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //C# example using UnityEngine; public class SomePerson : MonoBehaviour { //This field gets serialized because it is public. public string name = "John"; //This field does not get serialized because it is private. private int age = 40; //This field gets serialized even though it is private //because it has the SerializeField attribute applied. [SerializeField] private bool hasHealthPotion = true; void Update () { } } | cs |
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D] 좀더 쉬운 XML저장 방법 (0) | 2016.02.22 |
---|---|
[Unity3D] 멀티터치를 이용하여 줌인 줌아웃 구현 (0) | 2016.02.22 |
[Unity3D] 마우스 휠 적용법 (2) | 2016.02.22 |
[Unity3D] 플랫폼별 의존 컴파일 방법 (0) | 2016.02.22 |
[Unity3D] XML로 데이터 저장, 불러오기 (0) | 2016.02.19 |