⑴ unity怎么在Standard Assets文件下的脚本中调用其他文件夹的类
跨脚本和文件夹的路径没关系吧,你要是想用其他脚本中的数据可以把那个属性设定为静态变量(static)。然后使用类名.变量名进行直接调用。
⑵ Unity脚本类为什么要尽量避免继承MonoBehaviour类
应该从MonoBehavior的机制来分析比较合适
如果你的类无需引擎提供的各种初始化, 更新及析构, 物理, 渲染等的回调. 最好不要继承MonoBehavior
继承后, 引擎会在事件触发时, 通过反射调用各种函数. 这是需要消耗性能的.
当然, 如果你的类压根没挂上GameObject. 理论上说, 应该没啥卵用
所以总结, 弄不继承MonoBehavior尽量不派生
⑶ Unity不同脚本或者多个脚本之间的执行顺序Awake, Start
我们都知道,Unity中某个脚本的执行顺序是Awake、Start、Update、LateUpdate等,但是不同的脚本之间的执行顺序是怎样的呢?
例如我有两个脚本Script1和Script2,那么这两个脚本的Awake执行顺序是怎样的呢?
要知道真相我们就必须了解Unity后台的运行原理,其实Unity后台是单线程执行的,所谓的协程都是伪多线程。不同脚本的Awake在后台的执行真相是这样的:
Start、Update等函数也是相同的道理,那么问题就来了,这么多脚本,他们的执行顺序到底是怎样的呢?
2.点击右上角Execution Order显示如下:同样可以在Edit>Project Settings>Script Execution Order也可以打开这个页面
3、点击加号添加你想要排序的脚本文件。
4、拖动脚本文件进行排序。
5、只要把脚本的Default Time的时间改大一点,这个脚本就会迟运行的。
赶紧来试试吧!
⑷ Unity脚本类为什么要尽量避免继承MonoBehaviour类
首先这个结论和概念就是错误的。
Unity 的一般脚本类,大致可以分为游戏控制类(比如控制游戏角色、场景物品、NPC等),和用于游戏的特定数据存储类(比如表示某类物品的属性),前者必须继承于 MonoBehaviour 类,因为这些类要通过 Awake、Start 和 Update 等进入游戏的初始化和主循环,而后面的那些数据类倒不一定非继承自 MonoBehaviour 因为这样可以缩小类的字节大小。
⑸ 如何在unity中的脚本进行类名更改
地在MonoDevelop里把类名直接改掉,会破坏现有场景以及Project Assets中所有引用该脚本的链接,届时还需要一个一个把脚本添加回去,非常麻烦。其实只要遵循以下3个步骤,即可顺利重命名类名,且不破坏任何资源链接以及脚本之间的引用:
在Project Assets中,修改脚本文件名称。
双击改好名的脚本,在MonoDevelop中打开,然后将光标移至类名处,按键盘F2键,在弹出对话框中输入新名称(与脚本名相同)。
Ctrl+S保存脚本。
注意:第3步中如果改名牵涉到多个引用到该类的脚本,且这些脚本正好在MonoDevelop中的其他tab打开了,会发现这些脚本也被修改了,此时还需要对他们一一进行保存,否则编译器会报错,更快捷的方法是:File->Save All。
⑹ Unity几个基类的大致关系
Unity里C#脚本中最基本的类
派生自 UnityEngine.Object ,Unity里另一个重要的类,同时也是所有能添加到游戏对象GameObject上的组件(Componet)的基类。
派生自 UnityEngine.Component ,有两个自己新的特有成员
enabled --启用状态,会执行每帧的更新,禁用状态下则不会执行更新
isActiveAndEnabled --表示当前的Behaviour是否被启用
派生自 UnityEngine.Behaviour
所有Unity里的脚本都显式的继承自这个 UnityEngine.MonoBehaviour
UnityEngine.Object --> UnityEngine.Component --> UnityEngine.Behaviour --> UnityEngine.MonoBehaviour
⑺ Unity教程:Unity脚本程序基础(三)
中国AR网(www.chinaar.com)连续分享了Unity教程,获得了火热的反响,今天再次分享教程《Unity教程:Unity脚本程序基础》
Unity脚本语言:
Unity3D 目前支持三种语言的脚本程序,包括C#、JavaScript、 Boo,在一个游戏中开发者可以使用一种或者同时使用多种语言来实现脚本的控制。
教程由中国AR网资源教程(http://www.chinaar.com/ZYJC/)分享,更多教程进入中国AR网可以看到,有相关问题也可以在文章后面进行评论。
⑻ unity的js脚本怎么调用c#的类
在c#中一般会封装成dll文件对外提供接口调用,unity的js脚本也是这样的调用方式。
一、创建dll文件
1。打开vs文件->新建-> 项目->C#->类库,输入项目的名称,创建一个dll项目;
2。引入 UnityEngine UnityEditor ;这两个文件放在unity安装目录的Unity\Editor\Data\Managed路径下,
具体添加步骤:右键点击解决方案->添加引用->浏览;
3。如果加入了UnityEngine UnityEditor,在项目中就可以using UnityEngine 和 UnityEditor;如果项目中不需要,也可以省略第二步;
举例说明:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using UnityEditor;
using System.Collections;
namespace dlltest
{
class Class2 : MonoBehaviour
{
void Start()
{
Debug.Log("this is unity call C# dll test!");
}
}
}
5。F5启动生成解决方案(debug或者release),把生成的dll放到unity工程的asset下;
6。如果继承了Monobehaviour的类在dll的子对象中有显示,这样就可以绑定到GameObject上了,如果是要引用dll的类,需要using 命名空间,名字一般和项目名称一致才能调用。
⑼ unity脚本开发:一些重要的类和类间的关系图
Unity 常用类间的关系图
Unity 任何要绑定在 GameObject 上的脚本都必须继承自 MonoBehaviour. 许多常用的类都属于组件, 如 Transform,Camera,Light 和 Animation 等. 所有的 GameObject 上都绑定了一个 Transform 组件, 且该组件无法被删除.
MonoBehaviour 常用方法
Transfrom
Object
GameObject
Component
Time
Animation
GameObject
tag
transfromg
GetComponment
GetComponmentInChildren
GetComponmentInParent
GetComponmenstInChildren
GetComponmentsInParent
对物体进行位置,大小,缩放的改变,找孩子
position:The position of the transfrom in world space.在世界空间坐标transform的位置。
localposition: The position of the transfrom relative to parent transfrom.相对于父级的变换的位置。
LossyScale:相对于模型的,物体的全局缩放(只读)。
LocalScale:相对于父级物体变换的缩放。
Translate:function Translate ( translation : Vector3, relativeTo : Space = Space.Self ) : void
移动transform在translation的方向和距离。
function Translate ( x : float, y : float, z : float, relativeTo : Space = Space.Self ) : void
• function Translate ( translation : Vector3, relativeTo : Transform ) : void
function Translate ( x : float, y : float, z : float, relativeTo : Transform ) : void
Roate:
RoateAround
LookAt:注视旋转
Find:通过名字找
GitChild:Git Child(int index)根据索引查找
DetachChildren :解除父子关系
SetParent:
active 是否活动
isStatic 是否静态
AddComponent
GetComponent
Find
FindWithTag
FindGameObjectsWithTag
SetActive
FindObjectOfType查找首个Type物体
FindObjectsOfType查找Type物体
Destroy 销毁
Instantiate 实例