脚本

Unity脚本入门,向新手们推荐一个很有帮助的入门级文档
由 vince 于 星期一, 01/02/2012 - 13:45 发表Unity脚本入门,向新手们推荐一个很有帮助的入门级文档。
出于分享精神,就不设置回复可见了。
- 5 条评论
- 347 次点击

unity3d角色暂停效果脚本
由 lyj19810816 于 星期六, 07/16/2011 - 00:49 发表- var playName = "None";
- static var currentControl ;
- function Update() {
- if( currentControl)
- return;//当有任何输入框被点击时屏蔽之后的内容
- if (Input.GetKey(KeyCode.UpArrow)||Input.GetKey(KeyCode.W)){
- transform.Translate(Vector3.forward*0.5);
- }
Unity3d 脚本代码初探
由 vrman 于 星期一, 07/04/2011 - 22:02 发表1 打开场景,从菜单 Assets->Create->Javascript创建一个js代码文件,代码文件会自动创建在 Project 面板中,打开代码,里面有自动生成的一个Update () {}方法,在方法内下如输入:
function Update () {
transform.Translate(Input.GetAxis("Horizontal"), 0.01, Input.GetAxis("Vertical"));
}
2 然后,选择菜单file->save,会发现刚刚输入的代码已经直接出现在unity3d窗口中刚被创建的代码文件中。将文件拖至Hierarchy面板中的模型名上(任意),会发现Inspector面板中相应模型的参数组最下方,多出一个 脚本文件名(script),这说明刚才的脚本内容已经可以直接影响到模型上了。
3 点击摄像机视图左下方的“play”键,就可以看到场景中相应模型的位置变化了。

WEB调用U3D函数
由 tttt01 于 星期五, 02/11/2011 - 15:54 发表如同大家所知道的U3D WEB播放器插件和ActiveX空件都有SendMessage()函数,它用于从web上调用U3D WEB播放器内部的内容函数,这个和U3D里的GameObject.SendMessage函数类似 从WEB上调用的时候,传递一个物体名称,一个函数名和一个单一参数,SendMessage()将在指定游戏物体上调用给定的数据.
为了调用U3D WEB播放器的SendMessage()函数必须先给正在显示的U3D WEB播放器内容引用.可以用JS的document和它的getElementById()函数获取对象.这有个帮助上的例子 JS函数在U3D WEB播放器内容上执行函数获取对象,物体/嵌入标签ID值为UnityContent:然后SendMessage()调用名为MyObejct物体上函数MyFunction,并且传递一段字符传数据
那么在U3DWEB播放器内容内部,就需要一个脚本名为MyObject的游戏物体 并且在该游戏物体上的有一个MyFunction的函数;(-_-!)没有我就没办法了...
如:
function MyFunction(text:String)
Debug.Log(text);
使用SendMessage()时,一个字符串,整形或者浮点型参数必须被传递,该参与在调用方是必须的.如果你不需要,那么仅仅传递一个零值或者直接却省,并且在U3D里忽略它.还有就指定的游戏物体可以路径名给出 如/MyObjcet/SomeChild这里SomeChild必须是MyObject的子,而且呢MyObject必须在根级上,因为'/'名称在前
还有在发布WEB播放器内容的时候生成的默认HTML文件包含了对象和嵌入标签以便使用内用所在的浏览器适当的加载,为了允许基于浏览器的JS能分辨2个标签,它门每个都使用不同的ID UnityObject用于对象标签,UnityEmbed用于嵌入标签.因此,却省的HTML也包含一个JS函数,GetUnity(),它执行简单的浏览检测并返回一个使用标签元素引用.这有个帮助的例子
好了WEB调用U3D 教程到此为止
参考资料 U3D帮助文档

u3d常用代码小集合
由 tttt01 于 星期五, 02/11/2011 - 15:48 发表01、基本碰撞检测代码
function OnCollisionEnter(theCollision : Collision){
if(theCollision.gameObject.name == "Floor"){
Debug.Log("Hit the floor");
}else if(theCollision.gameObject.name == "Wall"){
Debug.Log("Hit the wall");
}
}
02、检测输入
function Update () {
if(Input.GetButtonUp("Jump")){
Debug.Log("We Have Hit the Space Bar!");
}
}
03、销毁对象
function Start () {
Destroy(gameObject.Find("Box"), 3);
}
04、实例来创建对象
//Simple Instantiation of a Prefab at Start
var thePrefab : GameObject;
function Start () {
var instance : GameObject = Instantiate(thePrefab, transform.position, transform.rotation);
}
建立JAVA,把代码拖入到空GameJect上,然后把Prefab拖入到公共变量上,就可以了
05、简易定时器
var myTimer : float = 5.0;
function Update () {
if(myTimer > 0){
myTimer -= Time.deltaTime;
}
if(myTimer <= 0){
Debug.Log("GAME OVER");
}
}
06、物体在屏幕上移动
var speed : float = 5.0;
function Update () {
transform.Translate(Vector3(0,0,speed) * Time.deltaTime);
}
07、钢体向目标处移动
//Basic force to move a rigidbody object
var power : float = 500.0;
function Start () {
rigidbody.AddForce(Vector3(0,0,power));
}
08、碰撞然后转到下一场景
function OnCollisionEnter (myCollision : Collision) {
if(myCollision.gameObject.name == "Floor"){
Application.LoadLevel(myLevel);
}
}
floor---被动碰撞的的纲体
把代码拉到主动纲体上
然后
场景设置:file----build seting----对话框,然后把当前场景拖里,然后把下一场景拖里,测试OK
转自互联网,原作者看到请留名!

Unity3d批量修改贴图导入设置工具脚本
由 unityfit 于 星期二, 01/04/2011 - 21:25 发表这个脚本我一直再用,它小巧,但是威力大.特别针对大批量贴图要调整尺寸等等的时候作用尤为明显.
在菜单中添加"Custom→Texture"的方式来批量改变所选的贴图导入设置.Unity本身只能一次打开一张图片进行导入设置,目前这个脚本可以批量更改贴图格式,是否开启MipMap,调整纹理最大尺寸,是否可读等等.
用法是把脚本放在你项目的资源目录的Editor文件夹下.然后选择你要批处理的纹理.到菜单中选择要处理的类型就可以了.
ChangeTextureImportSettings.cs for Unity2.x
代码: using UnityEngine; using UnityEditor;
一个用于过场控制的脚本文件(含演示scene)
由 cgjch 于 星期二, 12/07/2010 - 21:34 发表一个用于过场控制的脚本文件(含演示scene)
可以扩展为片头的动画控制和RPG游戏的中间情节过渡和控制
有演示scene,照着做就行了
- 3 条评论
- 1139 次点击
个人改良的行为控制脚本
由 jasmino22 于 星期二, 11/30/2010 - 06:10 发表之前,曾经有朋友反映过,有时这个脚本会发生“自动旋转视角”的现象,经测试发现如果在开始,默认的角度为非零时,运行时就会发生上面的问题,根据这个原因,对代码进行了修改后,此BUG已经清除。
使用方式:
新建一个C#的脚本文件,然后将下面的代码灌入其中,将官方提供的那个First Person Controller中的所有脚本删除,再链入这个脚本即可。
经过测试,在IE和火狐中都可以正常使用
using UnityEngine;
using System.Collections;
public class FPSWalker_edit02 : MonoBehaviour
{
/// <summary>
/// 类似于VRML的控制方式
/// ↑前进 ↓后退 →右转 ←左转

距离判断触发事件脚本
由 fallang 于 星期一, 10/11/2010 - 08:23 发表
using UnityEngine;
using System.Collections;
public class test: MonoBehaviour {
public Transform end ;
// Use this for initialization
void Start () {
if(end == null)
end = GameObject.FindWithTag("Finish").transform;//终点目标,可以指定,也可以标记tag为Finish。
}
// Update is called once per frame
void Update () {
if(Vector3.Distance(transform.position ,end.position)<2){
print("我已经到达终点");
}
}
}
- 2 条评论
- 722 次点击

关于Terrain.activeTerrain的提问??
由 cartoonboy 于 星期二, 06/01/2010 - 17:48 发表我把var terrainHeights = Terrain.activeTerrain.terrainData.GetHeights( 0, 0, xPolyDivision, zPolyDivision);
改为var terrainHeights = GetComponent(Terrain).terrainData.GetHeights( 0, 0, xPolyDivision, zPolyDivision);
这句报错:terrainHeights[i,j] = hit.point.y/Terrain.activeTerrain.terrainData.size.y;
不明白是什么原因。为什么用activeTerrain就可以呢?? 当我在场景中创建一个Terrain时,还不都是指向同一个Terrain吗??请高手指教!!
- 4 条评论
- 593 次点击
