zoukankan      html  css  js  c++  java
  • Unity3D常用代码总结

    1 GUI汇总

    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, Multiline"); //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 follow
     
    var offset = Vector3.up;    // Units in world space to offset; 1 unit above object by default
    var clampToScreen = false;  // If true, label will be visible even if object is off screen
    var clampBorderSize = .05;  // How much viewport space to leave at the borders when a label is being clamped
    var useMainCamera = true;   // Use the camera tagged MainCamera
    var cameraToUse : Camera;   // Only use this if useMainCamera is false
    private 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<GuiListItem> 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<GuiListItem>(); //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<Transform>();

            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;

                    }

                }

            }

        }

    }

  • 相关阅读:
    [KB] Office序列号移除器
    收音机的记忆
    EnCase v7 正式版预览
    关于Ex01和EnCase 6.19的小道消息
    EnCase V7 正式发布 新特性
    [EnCase v7专题] EX01证据文件获取设置释疑
    智能手机应用取证系列之三:腾讯微博Android手机客户端取证分析
    [EnCase v7] EnCase v7零售版改用CodeMeter加密狗
    Http Server的一个示例
    一个简单的加解密算法
  • 原文地址:https://www.cnblogs.com/runfeng/p/3403392.html
Copyright © 2011-2022 走看看