什么方法可以找到场景下所有的unity3d gameobjectt

遍历父物体下所有子物体的几种方式
遍历父物体下所有子物体的几种方式
1、通过标签来寻找
123456789void ForeachObjs()&&&&{&&&&&&&&//GameObject objs[] = GameObject&&&&&&&&objs = GameObject.FindGameObjectsWithTag("Cube_00");&&&&&&&&foreach (GameObject obj in objs)&&&&&&&&{&&&&&&&&&&&&obj.AddComponent("OnTiggerEnterSendMessage");&&&&&&&&}&&&&}2、通过Transform来寻找并附加脚本
&1234foreach (Transform child in gameObject.transform)&&&&&&&{&&&&&&&&&&&child.gameObject.AddComponent("OnTiggerEnterSendMessage");&&&&&&&}3、另外一种方式(转)
1234567891011//把这个函数放到你的代码中 check代表你要查询的物体 name为名称 如return GetTransform(transform,"bone12"); &&&&&&Transform GetTransform(Transform check,string name) { &&foreach (Transform t in check.GetComponentsInChildren&Transform&()) &&{ &&&&if(t.name==name){return t;} &&&&GetTransform(t,name); &&} &&return null; }4、(转)
很多高级游戏代码不仅仅控制单一物体。Unity脚本接口有很多方法获得和访问其他游戏物体和组件。下面我们假设有一个名为OtherScript.js的脚本附属于场景中的游戏物体。
var foo = 5;
function DoSomething ( param : String) {
print(param + " with foo: " + foo);
1.使用检视视图指定参数。
你能通过检视视图为一些游戏类型指定变量:
// Translate the object dragged on the target slot
var target : T
function Update () {
target.Translate(0, 1, 0);
也能显示参数在其他物体检视视图。下面你能在Inspector面板中拖拽包含OtherScript的游戏物体到target上。
// Set foo DoSomething on the target variable assigned in the inspector.
var target : OtherS
function Update () {
// Set foo variable of the target object
target.foo = 2;
// Call do something on the target
target.DoSomething("Hello");
2.通过继承结构
你能通过Transform组件获得一个子和父物体到现在的物体。
// Find the child "Hand" of the game object
// we attached the script to
transform.Find("Hand").Translate(0, 1, 0);
你只要在hierarchy面板建立了transform,你就能用GetComponent去获取other scripts。
// Find the child named "Hand".
// On the OtherScript attached to it, set foo to 2.
transform.Find("Hand").GetComponent(OtherScript).foo = 2;
// Find the child named "Hand".
// Call DoSomething on the OtherScript attached to it.
transform.Find("Hand").GetComponent(OtherScript).DoSomething("Hello");
// Find the child named "Hand".
// Then apply a force to the rigidbody attached to the hand.
transform.Find("Hand").rigidbody.AddForce(0, 10, 0);
你可以循环到它所有的子物体。
// Moves all transform children 10 units upwards!
for (var child : Transform in transform) {
child.Translate(0, 1, 0);
查看文档Transform类 可以获得更多信息。
3.通过名字或标签
你能用确定的标签搜索物体,使用GameObject.FindWithTag 和GameObject.FindGameObjectsWithTag。使用GameObject.Find通过名字获得游戏物体。
function Start ()
// By name
var go = GameObject.Find("SomeGuy");
go.transform.Translate(0, 1, 0);
var player = GameObject.FindWithTag("Player");
player.transform.Translate(0, 1, 0);
你能使用GetComponent获得脚本或组件在找到的游戏物体上。
function Start ()
// By name
var go = GameObject.Find("SomeGuy");
go.GetComponent(OtherScript).DoSomething();
var player = GameObject.FindWithTag("Player");
player.GetComponent(OtherScript).DoSomething();
一些特殊对象如主摄像机有快捷方式,可以使用Camera.main。
4.传递参数
一些事件中包含详细的事件。例如:扳机事件传递(碰撞)Collider组件到碰撞物体的handler函数。
OnTriggerStay给我们一个碰撞参数.从碰撞体我们能给他赋一个刚体。
function OnTriggerStay( other : Collider ) {
// If the other collider also has a rigidbody
// apply a force to it!
if (other.rigidbody) {
other.rigidbody.AddForce(0, 2, 0);
或者我们可以获取游戏中碰撞者包含的任意组件。
function OnTriggerStay( other : Collider ) {
// If the other collider has a OtherScript attached
// call DoSomething on it.
// Most of the time colliders won't have this script attached,
// so we need to check first to avoid null reference exceptions.
if (other.GetComponent(OtherScript)) {
other.GetComponent(OtherScript).DoSomething();
注意上面的例子,使用其他变量上的后缀,你能获取一些碰撞物体里的组件。
5.某个类型的所有脚本
从一个类找到任意对象或脚本,用Object.FindObjectsOfType或获得某个类型的第一个物体使用Object.FindObjectOfType.
function Start ()
// Find the OtherScript which is attached to any game object in the scene.
var other : OtherScript = FindObjectOfType(OtherScript);
other.DoSomething();
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5、自己写的深度优先遍历,找物体的孩子并做些什么事情
123456789101112131415161718192021222324252627282930313233343536373839using UnityEusing System.Cusing UnityE&&public class ChangeMeshRenderQuality : Editor{&&&&[MenuItem("GameObject/ChangeMeshRenderQuality")]&&&&static void FindChildMeshRender()&&&&{&&&&&&&&Debug.LogWarning("Change Now!!!");&&&&&&&&Transform[] selection =& Selection.GetTransforms( SelectionMode.TopLevel | SelectionMode.Editable);&&&&&&&&foreach(Transform t in selection)&&&&&&&&{&&&&&&&&&& &&&&&&&&&&&&ChangeQuality(t);&&&&&&&&}&&&&}&&&&&&&&&&static void ChangeQuality(Transform T)&&&&{&&&&&&&&for(int i = 0 ; i & T.childC i ++)&&&&&&&&{&&&&&&&&&&&&Transform childTransform = T.GetChild(i);&&&&&&&&&&&&if(childTransform.GetComponent&SkinnedMeshRenderer&() != null)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&childTransform.GetComponent&SkinnedMeshRenderer&().quality = SkinQuality.Bone4;&&&&&&&&&&&&}&&&&&&&&&&&&ChangeQuality(childTransform);&&&&&&&&}&&&&}&&&&&&&&&&// Disable the menu if there is nothing selected&&&&// 如果什么都没有选择将禁用菜单功能&&&&[MenuItem ("GameObject/ChangeMeshRenderQuality", true)]&&&&static bool ValidateSelection()&&&&{&&&&&&&&return Selection.activeGameObject != null;&&&&}&&}
发表评论:
TA的最新馆藏[转]&Unity 中场景切换 - 推酷
Unity 中场景切换
Unity游戏开发中,单个Scene解决所有问题似乎不可能,那么多个Scene之间的切换是必然存在。如果仅仅是切换,似乎什么都好说,但是在场景比较大的时候不想让玩家等待加载或者说场景与场景之间想通过一些画面、动画表现出一些让玩家期待的东西,大家就要去认真考虑。这篇文章主要介绍两种增加切换中如何播放画面或者动画等等,提高玩家的浸入感,当然你也可以做成
1 操作基础函数
Loads the level by its name or index.
加载场景,加载之前你需要把场景在 Build Settings添加,场景加载后,场景中的激活物体会调用MonoBehavior:OnLevelWasLoaded().使用该方法的时候,之前场景中的物体将会被直接删除。
LoadLevelAdditive
Loads a level additively. 该方法不销毁当前场景中的物体,新场景中的物体将会被添加进来,这个方法在一些连续加载的场景中非常有用哈。
LoadLevelAdditiveAsync
Loads the level additively and asynchronously in the background. 在后台异步记载场景 unity会在后台线程中加载所有的场景资源,这就允许你在加载新场景过程中播放一个进度条或者通过异步加载为玩家创造一个流程的世界 该方法会返回 AsyncOperation结构,结构中 isDone表示是否完成, progress给出当前的播放进度。注意的是在编辑器中后台线程的性能要低于游戏中。
LoadLevelAsync
Loads the level asynchronously in the background. 在后台异步记载场景 unity会在后台线程中加载所有的场景资源,这就允许你在加载新场景过程中播放一个进度条或者通过异步加载为玩家创造一个流程的世界 该方法会返回 AsyncOperation结构,结构中 isDone表示是否完成, progress给出当前的播放进度。注意的是在编辑器中后台线程的性能要低于游戏中。
LoadLevel和LoadLevelAsync,在加载完成后之后将会立刻销毁原先场景中的物体,而 LoadLevelAdditive和 LoadLevelAdditiveAsync 加载后将会保留原先的场景中的物体,这种方式可以实现无缝融合的场景,只需要你在适当的位置加载后面的场景,不过你还是要考虑资源的释放问题。
同步还是异步
&&&& 异步加载能够获得加载过程的进度和是否加载完成,通过这种方式你可以在切换中增减进度条或者其他表现,这种方式一般通过协程完成:
public class ExampleClass : MonoBehaviour
IEnumerator Start()
AsyncOperation async = Application.LoadLevelAsync(&MyBigLevel&);
yield return async;
Debug.Log(&Loading complete&);
需要注意的是:在使用之前需要在
Build Settings
中 添加Scene。
2 切换画面实现方法
场景切换中实现画面或者动画的方式有很多种,我现在看到的主要有两种,这里大致做下两种方式:
第一种方式:
增加新场景的方式可以参考雨松的博客:
,增加新场景的优点是增加了很多的灵活性,你在中间过渡场景中增加视频播放、图片或者是GUI,缺点就是如果你想在实现通用性,就需要顶层做一些数据辅助,比如加载前的场景中设置好切换时播放的图片到顶层数据管理模块中,在浸入切换场景后在获取这些数据,根据这些数据来切换播放的动画等等。
左图为测试工程中三个场景,Pre为当前场景,Middle为切换场景,Next是需要加载的场景。右图为middle场景中的存在的物体,挂有实现脚本。 案例逻辑:Pre场景中直接进入middle场景,在middle场景中预先加载Next场景,确保新场景加载完之后不会立刻显示Next的场景,而是等待用户的触摸或者点击操作
具体的操作过程:
(1)在Pre场景中使用同步加载方法直接进入middle场景,因为Middle场景非常小,所以这个过程会非常快
Application.LoadLevel(&Middle&);
(2)Middle场景的逻辑
public class NewBehaviourScript2 : MonoBehaviour
Texture BackImage = null;
private AsyncOperation async = null;
void Start ()
//此物体在下一个场景中不会被销毁
DontDestroyOnLoad(this);
//开始加载场景
StartCoroutine(&LoadScene&);
//异步加载
IEnumerator LoadScene()
async = Application.LoadLevelAsync(&Next&);
yield return async;
Debug.Log(&Complete!&);
void OnGUI()
//切换场景中的背景,可以是图片或者动画,或者~~
GUI.DrawTexture(new Rect(<span style="color: #, <span style="color: #, Screen.width, Screen.height), BackImage);
//加载过程中显示进度,也可以是进度条
if (async != null && async.isDone == false)
GUIStyle style = new GUIStyle();
style.fontSize = <span style="color: #;
GUI.Label(new Rect(<span style="color: #, <span style="color: #0, Screen.width, <span style="color: #), async.progress.ToString(&F2&), style);
//在加载结束后,弹出是否下个场景,模拟手游中&触摸任意位置进入游戏&
if (async != null && async.isDone == true)
if (GUI.Button(new Rect(<span style="color: #0, <span style="color: #0, <span style="color: #0, <span style="color: #0), new GUIContent(&跳起进入下一个场景&)))
Destroy(this);
A 场景中添加一个占满全屏的背景图,当然也可以使用动画、视频等,场景加载后马上开始加载下一个场景(异步),根据异步加载进度进行进度条、动画等等进度控制
B 注意:MiddleObj物体被设置为
,也就是在新的场景中不销毁,即使在新场景加载后也会占满全屏的背景仍然存在,直到物体被销毁
C MiddleObj物体销毁的方式有两种,一种是手动方式,就像下面代码中使用的,点击Middle场景中的按钮销毁自己 ,另外一种自动方式是在新场景(Next场景)中的
MonoBehavior:OnLevelWasLoaded()函数中销毁该物体。
void OnLevelWasLoaded(int level)
GameObject obj = GameObject.Find(&MiddleObj&);
if (obj != null)
GameObject.Destroy(obj);
雨松在实现新加载场景中先将场景中的所有物体隐藏,场景切换之后再慢慢的显示出来,而不是通过
的方式,也是一种办法哈。如果想要把这种方式设计为通用模式,可以增加一个数据管理器,在加载前提前设置好需要的图片、动画资源等内容,OK ,就可以在多个场合使用啦。
第二种方式使用prefab
这种方式和第一种方式原理上其实类似,只不过不使用新的场景,而是在Pre场景中增加类似于上面Middle场景中的MiddleObj物体中的逻辑,并且设置为
。这种方式中可以参考的就是
场景管理插件,
的使用可以参考:
具体使用我就不多说了哈,咱先看看其实现的关键原理: SceneManger使用异步加载新场景,进入加载之后,就会根据选择使用不同的屏幕效果,并且这个效果是不会在新场景中消失的,直到需要的效果目标达到,就会显出出先场景。 SceneManger 提供了一些列的屏幕效果Prefab以及场景管理方式,很不错的插件哈。&&&&&&
测试代码下载:
l976 ,内带有SceneManager 插件(花15大洋买的)
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity研究院之Prefab和GameObject的正向和逆向查找引用
Unity研究院之Prefab和GameObject的正向和逆向查找引用
围观28978次
编辑日期: 字体:
我发现很多美工兄弟都爱问程序Unity3d为什么总丢材质? 我不排除U3d有BUG的情况下会丢材质?但是其实很多时候是人为操作而引起的。
1.不保存就在上传
这个操作太恐怖了,切记!!在 U3D里面你无论操作了什么,当你要上传svn的时候一定要先保存场景,Ctrl+S 切记切记!!如果不保存就上传很有可能就会丢材质。
2.我的电脑明明没事,怎么你哪里就丢材质?
我发现一个很有意思的现象,每次走到美术电脑前看它的svn工程时,我都会发现各种的“黄叹号”整个工程严重的冲突。然后程序和美术的对话就是:“这资源有用没?没用删了, 我重新更新。。。” 哈哈哈 我觉得可能只有程序员才会对冲突非常敏感吧,但我觉得这件事不能怪美术,美术是很抽象的东西,不向程序要具体到少一个分号就无法进行了。
3.管理好材质贴图
如果项目不管理好材质和贴图,后起你会发现有很多完全一样的图片只是名子不一样,但是还都在使用中。。这个很有可能是好几个美术同时在做,这样会造成资源的浪费。
4.特效丢材质
我举个实际的例子,我们项目场景和特效是两个人来做。之前总遇到场景特效莫名其妙丢材质的问题。原因就是做特效的人把特效修改了,但是做场景的又不知道,因为可能这个特效在好多场景上都在使用中。
如下图所示,在Preiject下面方的Prefab 如果拖入Hierarchy视图中,它俩是具有关联关系的,如果你直接在Project视图中修改了Prefab那么所有Hierarchy视图中关联它的Prefab都会得到修改。小改动这样是没问题的,如果发生一些比较大的改动,那么Hierarchy视图中Prefab可能就会丢失或者坏掉。但是假如你有很多场景都引用同一个Prefab,这么多场景会很难找到的。
正向在Hierarch视图中选择一个prefab,然后在右侧Inspector视图中点击Select会自动找到Project视图中的Prefab对象。那么反向如何从Project视图中找到Hierarchy视图中引用的Prefab呢?
如下图所示,Unity3d做了一个功能,在Project视图中选择一个Prefab,然后右键选择Find References In Scene ,那么此时Unity会自动帮你在当前场景中找到Hierarchy视图中引用这个Prefab的GameObject。
但是这个方法有点局限性,就是它只能找到当前场景的,假设你的这个Prefab在很多场景中都引用了,那么这样是找不到了,为了美术我决定写一个小小的工具,嘿嘿。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
[MenuItem("Assets/Check Prefab Use ?")] private static void OnSearchForReferences() { &&//确保鼠标右键选择的是一个Prefab
if(Selection.gameObjects.Length != 1)
//遍历所有游戏场景
foreach(EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
if(scene.enabled)
&&//打开场景
EditorApplication.OpenScene(scene.path);
//获取场景中的所有游戏对象
GameObject []gos = (GameObject[])FindObjectsOfType(typeof(GameObject));
foreach(GameObject go&&in gos)
&&//判断GameObject是否为一个Prefab的引用
if(PrefabUtility.GetPrefabType(go)&&== PrefabType.PrefabInstance)
UnityEngine.Object parentObject = EditorUtility.GetPrefabParent(go);
string path = AssetDatabase.GetAssetPath(parentObject);
//判断GameObject的Prefab是否和右键选择的Prefab是同一路径。
if(path == AssetDatabase.GetAssetPath(Selection.activeGameObject))
//输出场景名,以及Prefab引用的路径
Debug.Log(scene.path&&+ "&&" + GetGameObjectPath(go));
} } public static string GetGameObjectPath(GameObject obj) {
string path = "/" + obj.name;
while (obj.transform.parent != null)
obj = obj.transform.parent.gameObject;
path = "/" + obj.name + path;
return path; }
如下图所示,我就可以找到哪个场景引用了这个Prefab。 这里我没有用GameObject和Prefab的名子来判断,我觉得最好也不要用名字,因为Hierarchy视图中的名子完全可以随意修改的,如果被改了的话就肯定找不到了,而且场景那么多完全有重名的情况。
是不是很简单呢?嘿嘿。
或者还有个办法,就是运行时动态的载入Prefab,但是有些场景特效其实万全没有任何意义,仅仅是展示而已,程序也无需对它进行操作。
有了这个小工具,那么以后美术改完Prefab的时候,运行一下连带的看看某些场景上是否正常的显示了?嘿嘿嘿嘿。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!中国领先的IT技术网站
51CTO旗下网站
Unity3D无缝地形场景切换的解决方法
当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100
100 100坐标一下切换到场景2的100 100 100坐标这样的方法。
作者:U3d来源:Unity教程手册| 09:16
(如果您以为是这样的技术和代码)那就不用看了。这个技术的实质意义是为了解决--多地形场景带来的大量内存占用问题-举个我的例子-我的测试项目是1013张绘制地形--在不用上面的技术情况下-占用了我4.2G的内存(还好我电脑16G)想想下-如果一个大型的游戏直接这么运行的话(当然是不可能会这样傻的)一下就会带来5-8G的内存占用--这个游戏还能玩吗?(当然这个8G的占用内存也没换来他应该的效果,所以是浪费)
涉及到几个U3D函数:
Application.LoadLevel(lv):场景读取(记着用多场景前要现在File-Build Setting里登记下场景,才能在脚本里读取到)
DontDestroyOnLoad(object):保持物体在场景切换的时候不被卸载(能保持他的所有属性哦)
*AssetBundle类:预读资源(主要用于web3d,运行时实时从服务器下载需要的场景资源)
涉及到几个基础知识:
static 静态类、静态变量:在整个游戏中都不会被重新加载,所以可以当全局全场景变量使用,主要用于记录场景数组。
Collider的Is Trigger属性:设置成True,他是可以穿越不会产生能量传递的,但是,他是可以接受碰撞侦测的。配合主角的OnTriggerEnter事件,就可以知道你是否正在穿越一个Trigger了。在这里,我们用在判断何时加载新场景上。
2.制作场景边界
使用Cube + IsTrigger=True属性是最好的办法。
如果是双场景切换,注意两个场景边界坐标别重在一起,不然你走到边界会发现两个边界不停的切换=.=,要让2个场景边界互相交错一起。有必要的话,边界可以往里面缩一点(甚至可以吧场景重叠1/3,但这样两个场景你要做很多重复的东西),避免用户看到边界。
3.编写脚本
先理清楚逻辑关系以及一些常识:
1.是主摄像机走到边界才会做场景加载或卸载动作。所以代码是放在主摄像机上或者主角上。
2.场景可以加载,但是没有卸载场景这个东西(也没必要卸载,因为同一时间只会有一个场景为当前场景),所以如果你用九宫格方式做无缝连接,你需要把场景读取,然后让场景里所有物体DontDestroyOnLoad(当然包括主角,也就是this),然后其他场景也这么操作,当需要卸载场景时,只要把所有那个场景Object给Destroy掉就可以了。而做双场景连接则不需要这样,也简单的多。Unity3D教程手册:
3.如果是九宫格,你需要一个静态二维数组去记录每个位置场景的名字。这里也可以不需要这么做,有个技巧,你可以格式化场景名字规则来推算下一个需要加载的场景名字,比如M1N1表示(1,1)场景,那你就可以用字符串拆分的方法知道需要读取M0N0,M1N0,M2N0等等的场景。
4.接下来就是处理碰撞,获取下一个场景(双场景方式)或者当前场景(九宫格方式)的名字,这里你就可以看到一个被格式化过的场景名有多么重要。
1function OnTriggerEnter(other:Collider){23Application.LoadLevel(other.name);& //这是双场景方式直接把边界Cube名字设为了下一个场景名45}
上面的介绍是大概的描述-具体实现方法如下
我们在使用这个技术之前要将你的地形--在U3D里的File-Build Setting里登记下场景,才能在脚本里读取到-Add Current(这个是登记地形),之后我们来制作一个简单的-2个地形的切换方法。
Unity3D教程:无缝地形场景切换的解决方法
这个图是做好了的2张地形--中间的Cube是用来接受角色的碰撞的--这样我们就知道在何时去载入我们的下张地形场景了(不包括其他-数据,列如--坐骑这类的-这个需要另一段代码单独给坐骑-马或者车子这类的--还有很多)
Cube---把Inspector--Is Trigger--划勾--(这个作用是接受碰撞但不产生能量传递-也就是说他接受碰撞,但可以让同样具有 Is Trigger-划勾的属性物体通过--列入-我们的角色或坐骑)(补充--我们的角色也需要去勾选-Is Trigger-这些才可以通过,但官方自带的FPS--没有Is Trigger-这个勾选像-可以用如下方法解决-创建一个新的Cube为他重新命名-把他作为FPS-父物体--然后勾选-Cube的 Is Trigger-子物体就会有这项属性了)Unity3D教程手册:
这些工作建立好了以后-开始我们的脚本工作。
脚本如下:
01function OnTriggerEnter(other:Collider)0203{0405if (other.gameObject.name==&Cube1&)0607Application.LoadLevel(&Terrain 1&);0809};10
为了方便大家理解--我没有重新命名--Cube1--就是我们接受碰撞体,Terrain 1是我们的要载入的下张地形。(大家可以用很多方法去优化他--有优化的方法请发在这个帖子内-方便大家查看-非常感谢)
这段代码要放在角色上或角色摄像机上或FPS的父物体Cube上。
以上的操作就完成了-一个重地形0到地形1的切换--(可以解决100M或跟高的内存占用问题-这个要看你的地形场景而定了)
但这并不完整--我们也可能要重地形1回到地形0---这个要你们自己解决了-以上的内容已经把这个解决的方法说出来了--大家自己学习发挥下--这样才有进步。
下面我们来说明4张地形场景的载入--逻辑(这里只说明逻辑,具体代码和上方一样,需要大家自己发挥下)
Unity3D教程:无缝地形场景切换的解决方法
这个图中可以看到4张地形场景--我重点讲解--中间的2个大的Cube逻辑--那4个长方形的大家应该都清楚了。除非你没认真看。
中间最大的Cube是来判断--角色走的这个范围内的时候他要去载入那张地形场景-如果在这个大的Cube的范围内折载入其他的2张地形场景。(这个大的Cube可以根据自己的地形规格-做出调整这里给出的并不准确)
中间最小的Cube是来判断--角色走的这个范围内的时候他要去载入那张地形场景-如果角色走入小的Cube中后-载入其他3地形。
上面的方法只是--引导--实际制作中可以跟据这些方法推敲-这个4张地形场景同样少了-往返的-制作介绍--给大家学习的空间去发挥吧。
原文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条热点热点热点
24H热文一周话题本月最赞
讲师:1人学习过
讲师:35人学习过
讲师:0人学习过
精选博文论坛热帖下载排行
本书依据最新版《网络管理员考试大纲》的考核要求,深入研究了历年网络管理员考试试题的命题风格和试题结构,对考查的知识点进行了提炼,并...
订阅51CTO邮刊

我要回帖

更多关于 gameobject.destroy 的文章

 

随机推荐