[Unity3D]Unity3d开发常用代码集合
function OnGUI() { GUI.Label(Rect(1,1,100,20),"I'm a Label"); //1 GUI.Box(Rect(1,21,100,20),"I'm a Box"); //2 GUI.Button(Rect(1,41,100,20),"I'm a Button"); //3 GUI.RepeatButton(Rect(1,61,120,20),"I'm a RepeatButton"); //4 GUI.TextField(Rect(1,81,100,20),"I'm a TextFielld"); //5 GUI.TextArea(Rect(1,101,100,40),"I'm a TextArea,\nMultiline"); //6 GUI.Toggle(Rect(1,141,120,20),true,"I'm a Toggle true"); //7 GUI.Toggle(Rect(1,161,120,20),false,"I'm a Toggle false"); //8 GUI.Toolbar(Rect(1,181,160,20),-1,["Toolbar","Tool2","Tool3"); //9 GUI.SelectionGrid(Rect(1,201,190,20),2,["Selection","Grid","select3"],3); //10 GUI.HorizontalSlider(Rect(1,221,180,20),3.0,0,10.0); //11 GUI.VerticalScrollbar(Rect(1,241,20,100),3.0,1,0.0,10.0); //12 //13 GUI.BeginScrollView (Rect (200,10,100,100),Vector2.zero, Rect (0, 0, 220, 200)); GUI.Label(Rect(0,0,100,20),"I'm a Label"); GUI.EndScrollView(); //14 GUI.Window(0,Rect(200,129,100,100),funcwin,"window");}function funcwin(windowID:int) { GUI.DragWindow(Rect(0,0,10000,2000)); }
2 JS调用DLL
import System;import System.Runtime.InteropServices;@DllImport("user32.dll")public static function MessageBox(Hwnd : int,text : String,Caption : String,iType : int) : int {};function Start(){ MessageBox(0, "API Message Box", "Win32 API", 64) ;}function Update () {}
3 物体标签
var target : Transform; // Object that this label should followvar offset = Vector3.up; // Units in world space to offset; 1 unit above object by defaultvar clampToScreen = false; // If true, label will be visible even if object is off screenvar clampBorderSize = .05; // How much viewport space to leave at the borders when a label is being clampedvar useMainCamera = true; // Use the camera tagged MainCameravar cameraToUse : Camera; // Only use this if useMainCamera is falseprivate var cam : Camera;private var thisTransform : Transform;private var camTransform : Transform;function Start () { thisTransform = transform; if (useMainCamera) cam = Camera.main; else cam = cameraToUse; camTransform = cam.transform;}function Update () { if (clampToScreen) { var relativePosition = camTransform.InverseTransformPoint(target.position); relativePosition.z = Mathf.Max(relativePosition.z, 1.0); thisTransform.position = cam.WorldToViewportPoint(camTransform.TransformPoint(relativePosition + offset)); thisTransform.position = Vector3(Mathf.Clamp(thisTransform.position.x, clampBorderSize, 1.0-clampBorderSize), Mathf.Clamp(thisTransform.position.y, clampBorderSize, 1.0-clampBorderSize), thisTransform.position.z); } else { thisTransform.position = cam.WorldToViewportPoint(target.position + offset); }}@script RequireComponent(GUIText)
4 unity3d读取保存xml文件
import System;import System.Xml;import System.Xml.Serialization;import System.IO;import System.Text;class CeshiData{var Ceshi1 : String;var Ceshi2 : String;var Ceshi3 : float;var Ceshi4 : int;} class UserData{ public var _iUser : CeshiData = new CeshiData(); function UserData() { }}private var c1 : String;private var c2 : String;private var c3 : float;private var c4 : int;private var _FileLocation : String;private var _FileName : String = "CeshiData.xml";var myData : UserData[];private var tempData : UserData = new UserData();var i : int = 0;var GUISkin1 : GUISkin;var ShowData : int = 0;function Awake(){ _Filelocation=Application.dataPath;}function Start(){ FirstSave();}function FirstSave(){//初始化XML tempData._iUser.Ceshi1 = "?"; tempData._iUser.Ceshi2 = "?"; tempData._iUser.Ceshi3 = 0; tempData._iUser.Ceshi4 = 0; var writer : StreamWriter; var t : FileInfo = new FileInfo(_FileLocation+"/"+ _FileName); if(!t.Exists) { writer = t.CreateText(); _data = SerializeObject(tempData); for(i=0;i<10;i++){ writer.WriteLine(_data); } writer.Close(); }}function Save(sc1 : String,sc2 : String,sc3 : float,sc4 : int){//保存数据到指定的XMl里 tempData._iUser.Ceshi1 = sc1;tempData._iUser.Ceshi2 = sc2; tempData._iUser.Ceshi3 = sc3; tempData._iUser.Ceshi4 = sc4; var writer : StreamWriter; var t : FileInfo = new FileInfo(_FileLocation+"/"+ _FileName); t.Delete(); writer = t.CreateText(); _data = SerializeObject(tempData); for(i=0;i<10;i++){ writer.WriteLine(_data); } writer.Close();}function Load(){//读取保存在XML里的数据 var r : StreamReader = File.OpenText(_FileLocation+"/"+ _FileName);var _info : String ; for(i=0;i<10;i++){ _info = r.ReadLine(); _data=_info; myData[i] = DeserializeObject(_data);} r.Close();}function OnGUI() { GUI.skin = GUISkin1; if(GUI.Button(Rect(0,0,100,40),"save")){ Save("ceshi1","ceshi2",1.23,50);//要显示中文需设定中文字体} if(GUI.Button(Rect(200,0,100,40),"load")){ Load(); ShowData = 1; } if(ShowData == 1){ GUI.Label(Rect(170,170+53*0,150,50),myData[0]._iUser.Ceshi1); GUI.Label(Rect(370,170+53*0,150,50),myData[0]._iUser.Ceshi2); GUI.Label(Rect(550,170+53*0,150,50),myData[0]._iUser.Ceshi3 + ""); GUI.Label(Rect(760,170+53*0,150,50),myData[0]._iUser.Ceshi4 + ""); GUI.Label(Rect(170,170+53*1,150,50),myData[1]._iUser.Ceshi1); GUI.Label(Rect(370,170+53*2,150,50),myData[2]._iUser.Ceshi2); GUI.Label(Rect(550,170+53*3,150,50),myData[3]._iUser.Ceshi3 + "");GUI.Label(Rect(760,170+53*4,150,50),myData[4]._iUser.Ceshi4 + ""); }}//================================================================================function UTF8ByteArrayToString(characters : byte[] ){ var encoding : UTF8Encoding = new UTF8Encoding(); var constructedString : String = encoding.GetString(characters); return (constructedString);}//byte[] StringToUTF8ByteArray(string pXmlString)function StringToUTF8ByteArray(pXmlString : String){ var encoding : UTF8Encoding = new UTF8Encoding(); var byteArray : byte[] = encoding.GetBytes(pXmlString); return byteArray;} // Here we serialize our UserData object of myData//string SerializeObject(object pObject)function SerializeObject(pObject : Object){ var XmlizedString : String = null; var memoryStream : MemoryStream = new MemoryStream(); var xs : XmlSerializer = new XmlSerializer(typeof(UserData)); var xmlTextWriter : XmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, pObject); memoryStream = xmlTextWriter.BaseStream; // (MemoryStream) XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray()); return XmlizedString;} // Here we deserialize it back into its original form //object DeserializeObject(string pXmlizedString)function DeserializeObject(pXmlizedString : String){ var xs : XmlSerializer = new XmlSerializer(typeof(UserData)); var memoryStream : MemoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString)); var xmlTextWriter : XmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); return xs.Deserialize(memoryStream);}
5 单击物体弹出对话框
static var WindowSwitch : boolean = false; var mySkin : GUISkin; var windowRect = Rect (200, 80, 240, 100); function OnGUI () { if(WindowSwitch == true) { GUI.skin = mySkin; windowRect = GUI.Window (0, windowRect, WindowContain, "测试视窗"); } } function WindowContain (windowID : int) { if (GUI.Button (Rect (70,40,100,20), "关闭视窗")) { WindowSwitch = false; } } function OnMouseEnter () { renderer.material.color = Color.red; } function OnMouseDown () { Func_GUIWindow.WindowSwitch = true; } function OnMouseExit () { renderer.material.color = Color.white; }
6 读取txt文本
using UnityEngine;using System.Collections;using System.IO;using System.Text;public class ReadTxt : MonoBehaviour {string path = "D:\\txtName.txt";StreamReader smRead = new StreamReader(path,Encoding.Default); //设置路径string line;void Update () {if ((line = smRead.ReadLine()) != null) {string[] arrStr = line.Split('|'); //分割符 “|”id1 = arrStr[0].ToString();name = arrStr[1].ToString();sfz = arrStr[2].ToString();}}}
7 截屏
function OnMouseDown() { Application.CaptureScreenshot("Screenshot.png"); }
8 下拉菜单
using UnityEngine;using System.Collections;using System.Collections.Generic;using System.Text.RegularExpressions;public class DropDownList : MonoBehaviour{ private Rect DropDownRect; // Size and Location for drop down private Transform currentRoot; // selected object transform private Vector2 ListScrollPos; // scroll list position public string selectedItemCaption; // name of selected item private string lastCaption; // last selected item private int guiWidth; // width of drop list private int guiHight; // hight of drop list private bool textChanged; // if text in text box has changed look for item private bool clearDropList; // clear text box public bool DropdownVisible; // show drop down list public bool updateInfo; // update info window public Transform root; // top of the Hierarchy public GUISkin dropSkin; // GUISkin for drop down list public int itemtSelected; // index of selected item public bool targetChange; // text in text box was changed, update list public class GuiListItem //The class that contains our list items { public string Name; // name of the item public int GuiStyle; // current style to use public int UnSelectedStyle; // unselected GUI style public int SelectedStyle; // selected GUI style public int Depth; // depth in the Hierarchy public bool Selected; // if the item is selected public bool ToggleChildren; // show child objects in list // constructors public GuiListItem(bool mSelected, string mName, int iGuiStyle, bool childrenOn, int depth) { Selected = mSelected; Name = mName; GuiStyle = iGuiStyle; ToggleChildren = childrenOn; Depth = depth; UnSelectedStyle = 0; SelectedStyle = 0; } public GuiListItem(bool mSelected, string mName) { Selected = mSelected; Name = mName; GuiStyle = 0; ToggleChildren = true; Depth = 0; UnSelectedStyle = 0; SelectedStyle = 0; } public GuiListItem(string mName) { Selected = false; Name = mName; GuiStyle = 0; ToggleChildren = true; Depth = 0; UnSelectedStyle = 0; SelectedStyle = 0; } // Accessors public void enable()// don't show in list { Selected = true; } public void disable()// show in list { Selected = false; } public void setStlye(int stlye) { GuiStyle = stlye; } public void setToggleChildren(bool childrenOn) { ToggleChildren = childrenOn; } public void setDepth(int depth) { Depth = depth; } public void SetStyles(int unSelected, int selected) { UnSelectedStyle = unSelected; SelectedStyle = selected; } } //Declare our list of stuff public List MyListOfStuff; // Initialization void Start() { guiWidth = 400; guiHight = 28; // Manually position our list, because the dropdown will appear over other controls DropDownRect = new Rect(10, 10, guiWidth, guiHight); DropdownVisible = false; itemtSelected = -1; targetChange = false; lastCaption = selectedItemCaption = "Select a Part..."; if (!root) root = gameObject.transform; MyListOfStuff = new List(); //Initialize our list of stuff // fill the list BuildList(root); // set GUI for each item in list SetupGUISetting(); // fill the list FillList(root); } void OnGUI() { //Show the dropdown list if required (make sure any controls that should appear behind the list are before this block) if (DropdownVisible) { GUI.SetNextControlName("ScrollView"); GUILayout.BeginArea(new Rect(DropDownRect.xMin, DropDownRect.yMin + DropDownRect.height, guiWidth, Screen.height * .25f), "", "box"); ListScrollPos = GUILayout.BeginScrollView(ListScrollPos, dropSkin.scrollView); GUILayout.BeginVertical(GUILayout.Width(120)); for (int i = 0; i < MyListOfStuff.Count; i++) { if (MyListOfStuff[i].Selected && GUILayout.Button(MyListOfStuff[i].Name, dropSkin.customStyles[MyListOfStuff[i].GuiStyle])) { HandleSelectedButton(i); } } GUILayout.EndVertical(); GUILayout.EndScrollView(); GUILayout.EndArea(); } //Draw the dropdown control GUILayout.BeginArea(DropDownRect, "", "box"); GUILayout.BeginHorizontal(); string ButtonText = (DropdownVisible) ? "<<" : ">>"; DropdownVisible = GUILayout.Toggle(DropdownVisible, ButtonText, "button", GUILayout.Width(32), GUILayout.Height(20)); GUI.SetNextControlName("PartSelect"); selectedItemCaption = GUILayout.TextField(selectedItemCaption); clearDropList = GUILayout.Toggle(clearDropList, "Clear", "button", GUILayout.Width(40), GUILayout.Height(20)); GUILayout.EndHorizontal(); GUILayout.EndArea(); } void Update() { //check if text box info changed if (selectedItemCaption != lastCaption) { textChanged = true; } // if text box info changed look for part matching text if (textChanged) { lastCaption = selectedItemCaption; textChanged = false; // go though list to find item for (int i = 0; i < MyListOfStuff.Count; ++i) { if (MyListOfStuff[i].Name.StartsWith(selectedItemCaption, System.StringComparison.CurrentCultureIgnoreCase)) { MyListOfStuff[i].enable(); MyListOfStuff[i].ToggleChildren = false; MyListOfStuff[i].GuiStyle = MyListOfStuff[i].UnSelectedStyle; } else { MyListOfStuff[i].disable(); MyListOfStuff[i].ToggleChildren = false; MyListOfStuff[i].GuiStyle = MyListOfStuff[i].UnSelectedStyle; } } for (int i = 0; i < MyListOfStuff.Count; ++i) { // check list for item int test = string.Compare(selectedItemCaption, MyListOfStuff[i].Name, true); if (test == 0) { itemtSelected = i; targetChange = true; break; // stop looking when found } } } // reset message if list closed and text box is empty if (selectedItemCaption == "" && !DropdownVisible) { lastCaption = selectedItemCaption = "Select a Part..."; ClearList(root); FillList(root); } // if Clear button pushed if (clearDropList) { clearDropList = false; selectedItemCaption = ""; } } public void HandleSelectedButton(int selection) { // do the stuff, camera etc itemtSelected = selection;//Set the index for our currently selected item updateInfo = true; selectedItemCaption = MyListOfStuff[selection].Name; currentRoot = GameObject.Find(MyListOfStuff[itemtSelected].Name).transform; // toggle item show child MyListOfStuff[selection].ToggleChildren = !MyListOfStuff[selection].ToggleChildren; lastCaption = selectedItemCaption; // fill my drop down list with the children of the current selected object if (!MyListOfStuff[selection].ToggleChildren) { if (currentRoot.childCount > 0) { MyListOfStuff[selection].GuiStyle = MyListOfStuff[selection].SelectedStyle; } FillList(currentRoot); } else { if (currentRoot.childCount > 0) { MyListOfStuff[selection].GuiStyle = MyListOfStuff[selection].UnSelectedStyle; } ClearList(currentRoot); } targetChange = true; } // show only items that are the root and its children public void FillList(Transform root) { foreach (Transform child in root) { for (int i = 0; i < MyListOfStuff.Count; ++i) { if (MyListOfStuff[i].Name == child.name) { MyListOfStuff[i].enable(); MyListOfStuff[i].ToggleChildren = false; MyListOfStuff[i].GuiStyle = MyListOfStuff[i].UnSelectedStyle; } } } } // turn off children objects public void ClearList(Transform root) { //Debug.Log(root.name); Transform[] childs = root.GetComponentsInChildren(); foreach (Transform child in childs) { for (int i = 0; i < MyListOfStuff.Count; ++i) { if (MyListOfStuff[i].Name == child.name && MyListOfStuff[i].Name != root.name) { MyListOfStuff[i].disable(); MyListOfStuff[i].ToggleChildren = false; MyListOfStuff[i].GuiStyle = MyListOfStuff[i].UnSelectedStyle; } } } } // recursively build the list so the hierarchy is in tact void BuildList(Transform root) { // for every object in the thing we are viewing foreach (Transform child in root) { // add the item MyListOfStuff.Add(new GuiListItem(false, child.name)); // if it has children add the children if (child.childCount > 0) { BuildList(child); } } } public void ResetDropDownList() { selectedItemCaption = ""; ClearList(root); FillList(root); } public string RemoveNumbers(string key) { return Regex.Replace(key, @"\d", ""); } // sets the drop list elements to use the correct GUI skin custom style private void SetupGUISetting() { // set drop down list gui int depth = 0; // check all the parts for hierarchy depth for (int i = 0; i < MyListOfStuff.Count; ++i) { GameObject currentObject = GameObject.Find(MyListOfStuff[i].Name); Transform currentTransform = currentObject.transform; depth = 0; if (currentObject.transform.parent == root) // if under root { if (currentObject.transform.childCount > 0) { MyListOfStuff[i].GuiStyle = depth; MyListOfStuff[i].UnSelectedStyle = depth; MyListOfStuff[i].SelectedStyle = depth + 2; } else { MyListOfStuff[i].GuiStyle = depth + 1; MyListOfStuff[i].UnSelectedStyle = depth + 1; MyListOfStuff[i].SelectedStyle = depth + 1; } MyListOfStuff[i].Depth = depth; } else // if not under root find depth { while (currentTransform.parent != root) { ++depth; currentTransform = currentTransform.parent; } MyListOfStuff[i].Depth = depth; // set gui basied on depth if (currentObject.transform.childCount > 0) { MyListOfStuff[i].GuiStyle = depth * 3; MyListOfStuff[i].UnSelectedStyle = depth * 3; MyListOfStuff[i].SelectedStyle = (depth * 3) + 2; } else { MyListOfStuff[i].GuiStyle = depth * 3 + 1; MyListOfStuff[i].UnSelectedStyle = depth * 3 + 1; MyListOfStuff[i].SelectedStyle = depth * 3 + 1; } } } }}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。