2019-05-26 22:45:31 weixin_39549161 阅读数 526

基础内容

  1. 所有脚本都继承自MonoBehaviour类;
  2. 默认使用Start函数进行初始化,该函数仅执行一次。也可以使用Awake函数 进行初始化,不同之处在于 ,Awake在加载场景时运行,Start在 第一次调用Update或者FixedUpdate函数之前被调用,Awake运行在 Start函数之前
  3. 目前Unity暂不支持命名空间.或许未来版本会有.
  4. C#中协同程序有不同的句法规则,Coroutines必须是IEnumerator返回类型,并且yield用yield return替代.
using System.Collections;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
	// C# coroutine // C# 协同程序
	IEnumerator SomeCoroutine () {
		// Wait for one frame // 等一帧
		yield return 0;

		// Wait for two seconds // 等两秒
		yield return new WaitForSeconds (2);
	}
}

常用操作

对物体的移动以及旋转通过Transfrom操作。

  • 物体在Y轴上旋转5度。
public Transform transform;
void Update()
{
	//旋转操作
	transform.Rotate(0,5,0);
	//移动操作
	transform.Translate(0,0,2);
}

Vector3 向量

  • 新建一个向量(1,1,1)
public Vector3 aposition = new Vector3(1,1,1);
  • 向量的点乘,一个向量在另一向量方向上的投影,一个数值
public Vector3 a = new Vector3(1,1,1);
public Vector3 b = new Vector3(1,0,1);
float result = Vector3.Dot(a,b);
  • 向量的叉乘,得到一个垂直于两向量平面的新的向量
float result = Vector3.Cross(a,b);
  • 两个向量夹角,范围[0,180]
float angle = Vector3.Angle(a,b);
  • 两个向量距离
float dis = Vector3.Distance(a,b);
  • 规范化单位向量不改变原向量
float dis = Vector3.Distance(a.normalized,b.normalized);

全局变量

用static关键字创建全局变量,这是创建了一个名为someGlobal的全局变量.

using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
    public static int someGlobal = 5;
    public void Awake() {
        print(typeof(someGlobal));
        typeof(someGlobal) = 1;
    }
}

从另一个脚本访问它,你需要用”脚本名加一个小圆点再加上全局变量名”.

print(TheScriptName.someGlobal);
TheScriptName.someGlobal = 10; 

获取对象

  • 通过对象名(字符串Cube)获取单个游戏对象
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
    public GameObject obj;
    void Start() {
        obj =GameObject.Find("Cube");
    }
    void Update()
    {
    	if(obj != null)
    	{
    		obj.transform.Rotate(0, Time.deltaTime * 200, 0);
		}
	}
}
  • 通过标签获取多个/单个游戏对象
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
    public GameObject[] obj;
    void Start() {
        Myobjs = GameObject.FindGameObjectsWithTag("Cube");
    }
    void Update()
    {
    	if(Myobjs != null)
    	{
    		foreach(GameObject obj in Myobjs)
    		{
    			Debug.log("以"+obj.tag+"标签为游戏对象的名称"+obj.name);
    		}
	}
}

实例化

  • 一般创建克隆原始物体,多为预制体perfabs
  • 克隆原始物体,位置设置在position,设置旋转在rotation,返回的是克隆后的物体。这实际上在Unity和使用复制(ctrl+D)命令是一样的,并移动到指定的位置。如果一个游戏物体,组件或脚本实例被传入,实例将克隆整个游戏物体层次,以及所有子对象也会被克隆。所有游戏物体被激活。
public Transform prefab;
void Start()
{
	int i = 0;
	while(i < 10)
	{
		Instantiate(prefab,new Vector3(i*2.0f,0,0),Quaternion.identity);
		i++;
	 }
}
  • 实例化更多通常用于实例投射物(如子弹、榴弹、破片、飞行的铁球等),AI敌人,粒子爆炸或破坏物体的替代品。
public Rigidbody obj;
void Update()
{
	Rigidbody clone;
	clone = Instantiate(obj,transform.position,transform.rotation);
}
2013-07-14 22:22:00 weixin_30437337 阅读数 27

声明:最近参与了圣典的用户手册翻译,下面是我翻译的条目。Unity用户手册版权归Unity公司所有,中文手册翻译版权归Unity3D圣典所有,特此声明

Statement: Recently, I participated in the work of Unity3D User Manual translation, the following is my translation entries. Unity Technologies owns the copyright of Unity3D User Manual and Unity3D Shengdian owns the copyright of Chinese translation. It is hereby declared.

 下面文字内容出自用户手册->Practical Guide to Optimization for Mobiles->Practical Guide to Optimization for Mobiles - Future & High End Devices,链接为:http://game.ceeger.com/Manual/iphone-FutureDevices.html

Practical Guide to Optimization for Mobiles - Future & High End Devices 优化手机的实用指南 - 未来及高端设备

The graphical power of next-generation mobile devices is approaching that of the current generation of consoles (Wii, Xbox 360, and PS3). What will the consumer smartphone market look like in two years? It's hard to say for sure, but considering how things have been going, the average smartphone on the market will have a chipset about as fast as NVIDIA's Tegra 3 (Asus Transformer Prime, Google Nexus 7"), or Apple's A5X (iPad 3), and high-end tablets will pack graphical performance to rival today's consoles and consumer laptops.

下一代移动设备的图形功能将接近当前这一代的控制台(Wii、Xbox 360和PS3)。两年后的消费者智能手机市场会是什么样子?这很难确切地说,但考虑到事情的发展状况,市场上普通的智能手机将有与NVIDIA的Tegra 3(华硕Transformer Prime、谷歌Nexus 7")或苹果的A5X(iPad 3)近乎一样快递芯片组,高端平板电脑将打包图形性能来与现今的控制台和消费者笔记本电脑竞争。

What can these new devices do? 这些新设备能做些什么的?  

  Bumpmaps everywhere  凸凹贴图无处不在  

  Reflective water & simple image effects  反射水面和简单图像效果  

  Realtime shadows (Unity 4.0 feature)  实时阴影(Unity4.0功能)  

  HD video playback  高清视频播放  

  Faster script execution  更快的脚本执行

To get a sense of what is already being done for this coming generation of phones & tablets, watch NVIDIA's promotional video for Tegra 3. Bladeslinger and Shadowgun are Unity titles.

想了解下一代手机和平板电脑已经可以完成的信息,可以观看NVIDIA的Tegra 3的宣传视频。Bladeslinger和Shadowgun归Unity所有。

转载于:https://www.cnblogs.com/caroseraph/p/Unity3D%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C%E7%BF%BB%E8%AF%91.html

2016-12-19 16:17:38 blueuranus2084 阅读数 310

1、官网 

https://unity3d.com/cn/

2、unity3d 圣典

http://www.ceeger.com/

3、游戏蛮牛

http://www.manew.com/

4、腾讯游戏开发平台

http://gad.qq.com/

5、腾讯质量开放平台

http://wetest.qq.com/lab/tag/?tagId=24

6、游戏咖啡屋

http://www.yxkfw.com/forum.php

7、中大软院3d游戏开发教程

http://ss.sysu.edu.cn/~pml/se347/index.html

8、Unity崩溃报告自动处理工具:Crash Analyzer

http://forum.china.unity3d.com/thread-23180-1-1.html

9、漫漫路(牛人技术blog)

http://www.lanindex.com/

2015-08-26 01:32:24 yuxikuo_1 阅读数 1767

1、属性


1)、Slope Limit:坡度限制,限制碰撞器爬坡的倾斜值

2)、Step Offset:台阶高度,角色可以迈上的最高台阶高度

3)、Skin Width:皮肤厚度,决定两个碰撞器可以互相渗入的深度,较大的皮肤厚度值会导致颤抖,小的皮肤厚度值会导致角色被卡住,合理的设定值为半径(Radius)的10%

4)、Min Move Distance:最小移动距离,如果角色移动的距离小于该值,角色就不会移动,这样可以避免抖动现象,大部分值情况下被设置为0

5)、Center:中心点,该值决定碰撞器在世界空间的位置,并不影响角色的行动

6)、Radius:半径,碰撞器的半径

7)、Height:高度,角色的胶囊碰撞体高度,改变值会使碰撞器在Y轴方向伸缩

Step Offset属性也影响角色,确保对于一个2米大小的人来说,该值介于0.1到0.4之间。

Slope Limit不能设的太小,一般使用90度会比较合适,由于是胶囊提,角色控制器不会爬上墙

Skin Width如果角色被卡住了,那最有可能就是因为该值设的太小。该值至少要大于0.01,并且大于Radius的10%。

Min Move Distance推荐设置为0

2、刚体碰撞

控制器不会加在它身上的力做出反应,也不会自动推开其他刚体,如果想让角色控制器推开其他刚体或者对象,你可以在对象附加的脚本中添加OnControllerColliderHit()函数。

如果让角色被物理效果影响,那就最好使用刚体而不是角色控制器

3、变量

1)isGrounded:最后一次移动角色控制器是否触碰地面

2)velocity:角色当前的相对速度

3)collisionFlags:在最后的CharacterController.Move调用期间,胶囊体的哪个部分与周围环境碰撞

4)detectCollisions:其它的刚体和角色控制器是否能够与本角色控制器相碰撞,默认值为enabled

4、函数

1)SimpleMove:以一定的速度移动角色

2)Move:一个更加复杂的移动函数,每次都绝对移动

5、发送消息

OnControllerColliderHit:控制碰撞器碰撞,当控制碰撞器碰撞一个正在运动的碰撞器时,OnControllerColliderHit被调用

6、继承成员

1)enabled:启动碰撞器将会碰撞其它碰撞器,禁用碰撞器就不会碰撞其它碰撞器

2)attachedRigidbody:碰撞器附加的刚体

3)isTrigger:碰撞器是一个触发器

4)material:碰撞器使用的材质

5)sharedMaterial:碰撞器的共享物理材质

6)bounds:碰撞器在世界坐标空间的边界框

7)constantForce:恒力附加

8)renderer:渲染附加

9)audio:音频附加

10)guiText:GUIText附加,界面文本

11)networkView:NetworkView附加,网络视图

12)guiTexture:GUITexture附加,界面纹理

13)collider:Collider附加

14)hingeJoint:HingeJoint附加,铰链关节附加

15)particleEmitter:粒子发射器附加,ParticleEmitter

16)hideFlags:物体是否被隐藏,保存在场景中或被用户修改

7、继承函数

1)ClosestPointOnBounds:附加碰撞器的边界框附近的点

2)Raycast:投射一个光线,它忽略所有碰撞器

8、发送消息

1)OnTriggerEnter:当碰撞器进入触发器时调用

2)OnTriggerExit:当碰撞器停止触动触发器时,调用

3)OnTriggerStay:每个碰撞器触动触发器,几乎在所有的帧OnTriggerStay调用

4)OnCollisionEnter:当collider/rigidbody开始触动rigidbody/collider,调用OnCollisionEnter

5)OnCollisionExit:collider/rigidbody停止触动rigidbody/collider,将在每帧调用OnCollisionExit

6)OnCollisionStay:每个collider/rigidbody触动rigidbody/collider,将在每帧调用OnCollisionStay



Unity圣典

博文 来自: yu__jiaoshou
没有更多推荐了,返回首页