unity3d中如何获取所选对象的类型,挂载的脚本能否解析和更改呢

unity3d中如何获取所选对象的类型,挂载的脚本能否解析和更改呢,第1张

使用getcomponent方法获取该物体上你所需要的组件,可以是你的脚本也可以是unity的脚本,如果没有该脚本则返回null,如果有就返回你获取的类型,然后这个获取的类就是该物体的相应类的实例,你可以对其进行 *** 作

Unity3d中GameObject对象可以包括其他子GameObject,并且本身包括多个Component

1.GameObjectFind("myObject") or FindGameObjectByTag will search the scene for an object called myObject

2. transformFind("myObject") will only search the game objects children for an object called myObject

3.GetComponent用来获取组件。

Transform Find(String name)    Transform FindChild(String name)

查找名为name的(transformgameObject)直接子物体并返回该子物体的Transform属性。不能是孙子物体或更低辈分的子物体。

2可以在name中使用字符'\' 遍历整个路径。其中路径的根必须是transformgameObject的直接子物体,不能是孙子物体或更低辈分的子物体。

这样就可以访问到以transformgameObject为根的物体树,包括其子物体,孙子物体,曾孙物体。。。。

若Cube物体有一个直接子物体Cube1,Cube1有一个直接子物体Cube2,我们就可以在Cube的脚本中使用transformFind("Cube1/Cube2");

或transformFindChild("Cube1/Cube2");

这样就直接访问到了transformgameObject的孙子物体Cube2。

在 Unity 中目前我发现了获取依赖关系的两个 API 接口,分别是:

EditorUtilityCollectDependencies

AssetDatabaseGetDependencies

其中 AssetDatabaseGetDependencies 获取到的结果就是上面演示的那样,是大粒度的依赖关系。而 EditorUtilityCollectDependencies 获取到的是小粒度的依赖关系,所依赖的组件和 Shader 等都会列出来,非常的仔细。

C#

#if UNITY_EDITOR

using UnityEngine;

using SystemCollections;

using UnityEditor;

namespace PTFind

{

[ExecuteInEditMode]

public static class Find

{

[MenuItem("Find/What objects in scene use this", false, 20)]

public static void SelectSceneUsesOfAsset()

{

Object selectedObject = SelectionactiveObject;

if (selectedObject == null)

{

return;

}

Object[] roots = new Object[]{ selectedObject };

var objs = EditorUtilityCollectDependencies(roots);

string path = AssetDatabaseGetAssetPath(selectedObject);

var objs2 = AssetDatabaseGetDependencies(path);

foreach (var obj in objs)

{

DebugLog(objGetType()Name);

}

}

}

}

#endif

#if UNITY_EDITOR

using UnityEngine;

using SystemCollections;

using UnityEditor;

namespace PTFind

{

[ExecuteInEditMode]

public static class Find

{

[MenuItem("Find/What objects in scene use this", false, 20)]

public static void SelectSceneUsesOfAsset()

{

Object selectedObject = SelectionactiveObject;

if (selectedObject == null)

{

return;

}

Object[] roots = new Object[]{ selectedObject };

var objs = EditorUtilityCollectDependencies(roots);

string path = AssetDatabaseGetAssetPath(selectedObject);

var objs2 = AssetDatabaseGetDependencies(path);

foreach (var objin objs)

{

DebugLog(objGetType()Name);

}

}

}

}

#endif

不得不说,Unity Editor 提供的默认的依赖查找的功能好弱,包括反向依赖关系,引用关系丢失等功能。或许我们可以利用这些接口自己做一个好用点的依赖关系查找插件。

如果在使用Unity包管理器时遇到无法获取授权代码的问题,可以尝试以下几个步骤:

1 确认Unity版本是否为最新版本。旧版本可能会出现此问题。

2 确认您的Unity账户与打开的Unity项目链接是否出现问题。尝试在Unity编辑器中登录您的Unity账户,然后重新启动Unity项目。

3 确认您的网络连接是否正常。无法连接到Unity服务器可能会导致此问题。

4 尝试在Unity编辑器中手动获得授权代码。在Unity编辑器中,选择“帮助”>“检查更新”,然后单击“获得授权代码”。按照提示进行 *** 作。

5 如果以上步骤仍然无法解决问题,可以尝试从Unity官方网站下载所需的包,并手动导入到Unity项目中。

如果仍然不能解决问题,你可以联系Unity的技术支持获取帮助。

通过GameObjectFind("节点的名字"), 来寻找到其他节点的object;

不管是父节点,子节点 都可以直接找到。

//题外话

GameObjectFind() 消耗大,别用到Update();

如果这个节点的active 是false 用GameObjectFind()是找不到的。

(active 为false 就是Tag 位置上边的勾选框 没有勾选)

这就是为什么会建立一个空节点作为父节点,然后在空节点下面放其他有用的节点吧。。。?

让这个空节点active 保持是 true;

然后通过

GameObjectFind("空节点的名字")transformFind("active是false的子节点");

systemInfo = SystemInfooperatingSystem + " \r\n"

+ " processorType(处理器的名称): " + SystemInfoprocessorType + " \r\n"

+ " processorCount(当前处理器的数量): " + SystemInfoprocessorCount + " \r\n"

+ " processorFrequency(处理器的频率): " + SystemInfoprocessorFrequencyToString() + " \r\n" //处理器的频率。

+ " memorySize(系统内存大小): " + SystemInfosystemMemorySize + " Mb \r\n"

+ " Graphics(显卡的名称): " + SystemInfographicsDeviceName + " vendor: " + SystemInfographicsDeviceVendor + " \r\n"

+ " memorySize(显存大小): " + SystemInfographicsMemorySize + " Mb \r\n"

+ " graphicsMultiThreaded(是否支持多线程渲染): " + SystemInfographicsMultiThreadedToString() + " \r\n"

+ " supportedRenderTargetCount(支持渲染多少目标纹理): " + SystemInfosupportedRenderTargetCountToString() + " \r\n" //支持渲染多少目标纹理。

+ " graphicsDeviceVersion(显卡的类型和版本): " + SystemInfographicsDeviceVersionToString() + " \r\n" //显卡的类型和版本。

+ " graphicsShaderLevel (显卡着色器的级别): " + SystemInfographicsShaderLevelToString() + " \r\n" //显卡着色器的级别

;

你可以搜索SystemInfo还有一些参数

以上就是关于unity3d中如何获取所选对象的类型,挂载的脚本能否解析和更改呢全部的内容,包括:unity3d中如何获取所选对象的类型,挂载的脚本能否解析和更改呢、unity3d 如何获取一个子对象、如何在 Unity 中获取某个对象的依赖关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9300408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存