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,\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 () {
}
//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;
}
}
}
}
}
Unity3D常用代码总结的更多相关文章
- Unity3d 常用代码
//创建一个名为"Player"的游戏物体 //并给他添加刚体和立方体碰撞器. player=new GameObject("Player"); player. ...
- (转) Unity3D常用代码收集总结
//创建一个名为"Player"的游戏物体 //并给他添加刚体和立方体碰撞器. player=new GameObject("Player"); player. ...
- Unity3D常用代码集合
1.基本碰撞检测代码 function OnCollisionEnter(theCollision : Collision){ if(theCollision.gameObject.n ...
- GCD 常用代码
GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...
- 转--Android实用的代码片段 常用代码总结
这篇文章主要介绍了Android实用的代码片段 常用代码总结,需要的朋友可以参考下 1:查看是否有存储卡插入 复制代码 代码如下: String status=Environment.getE ...
- 刀哥多线程之03GCD 常用代码
GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...
- jquery常用代码集锦
1. 如何修改jquery默认编码(例如默认GB2312改成 UTF-8 ) 1 2 3 4 5 $.ajaxSetup({ ajaxSettings : { contentT ...
- Mysql:常用代码
C/S: Client Server B/S: Brower Server Php主要实现B/S .net IIS Jave TomCat LAMP:L Mysql:常用代码 Create table ...
- javascript常用代码大全
http://caibaojian.com/288.html 原文链接 jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...
随机推荐
- redis和ssdb读取性能对比
最近关注了一下ssdb,它的特点是基于文件存储系统所以它支撑量大的数据而不因为内存的限制受取约束.从官网的测试报告来看其性能也非常出色和redis相当,因此可以使用它来代替redis来进行k-v数据业 ...
- ASP.NET WebAPI 生成帮助文档与使用Swagger服务测试
帮助HELP 要实现如WCF中的Help帮助文档,Web API 2 中已经支持很方便的实现了这一特性 http://www.asp.net/web-api/overview/creating-we ...
- 尝试在mac上用dotnet cli运行asp.net core示例程序
自从知道微软用dotnet cli取代dnx之后,一直在等dotnet cli支持asp.net core... 昨天看到这篇新闻(ASP.NET Core 1.0 Hello World)后,才知道 ...
- 用AutoHotKey彻底解决“Ctrl键+鼠标滚动”时的缩放问题
“Ctrl键+鼠标滚动”会造成代码编辑窗口的字体缩放,这是自Visual Studio 2010以来引入的一个新特性,也是一个恼人的问题,详见VS2010中尴尬的代码窗口缩放功能. 于是,每次安装Vi ...
- C++ Primer学习笔记二
vector<int> a(10,0); for(vector<int>::iterator itor=a.begin();itor!=a.end();itor++) *ito ...
- 深入理解java虚拟机【内存溢出实例】
通过简单的小例子程序,演示java虚拟机各部分内存溢出情况: (1).java堆溢出: Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收 ...
- JavaScript简洁继承机制实现(不使用prototype和new)
此方法并非笔者原创,笔者只是在前辈的基础上,加以总结,得出一种简洁实用的JavaScript继承方法. 传统的JavaScript继承基于prototype原型链,并且需要使用大量的new操作,代码不 ...
- Spring依赖注入(IOC)那些事
小菜使用Spring有几个月了,但是对于它的内部原理,却是一头雾水,这次借着工作中遇到的一个小问题,来总结一下Spring. Spring依赖注入的思想,就是把对象交由Spring容器管理,使用者只需 ...
- 易出错的C语言题目之一:宏定义与预处理
1.写出下列代码的运行结果: #include<stdio.h> #include<string.h> #define STRCPY(a,b) strcpy(a##_p,#b) ...
- iOS开发——高级技术&通讯录功能的实现
通讯录功能的实现 iOS 提供了对通讯录操作的组建,其中一个是直接操作通讯录,另一个是调用通讯录的 UI 组建.实现方法如下: 添加AddressBook.framework到工程中. 代码实现: 1 ...