当前位置: 首页 > news >正文

什么是速成网站3d建模培训学校哪家好

什么是速成网站,3d建模培训学校哪家好,php企业网站开发,柳林网站建设一、GameObject中的成员变量 1.名字: //使用小写 gameObject 访问当前对象 print(this.gameObject.name);//设置当前物体名称为"名字" this.gameObject.name "名字";// 打印变量值 print(this.gameObject.name); 2.是否激活: p…

一、GameObject中的成员变量

1.名字:

//使用小写 gameObject 访问当前对象
print(this.gameObject.name);//设置当前物体名称为"名字"
this.gameObject.name = "名字";// 打印变量值
print(this.gameObject.name);

2.是否激活:

print(this.gameObject.activeSelf);

3.是否是静态:

print(this.gameObject.isStatic);

4.层级:

print(this.gameObject.layer);

5.标签:

print(this.gameObject.tag);

6.transform:

print(this.gameObject.transform.position);

Unity核心概率④:MonoBehavior-CSDN博客中提到的通过MonoBehavior去得到依附对象的GameObject位置信息,他们得到的信息是一样的。

二、GameObject中的静态方法

只要得到了一个GameObject对象,我们就可以得到它身上挂载的任何脚本信息。

1.创建unity自带的几何体

// 创建一个立方体原始游戏对象
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);// 将该对象的名称设置为"立方体"
obj.name = "立方体";

2.查找对象相关

①查找单个对象

通过对象名查找:

注意:这个查找方法效率比较低下,因为它会在场景中的所以对象中去查找。

// 在场景中查找名为"对象"的游戏对象
GameObject obj = GameObject.Find("对象");// 检查是否成功找到该游戏对象
if(obj != null)
{// 如果找到,打印该游戏对象的名称print(obj.name);
}
else
{// 如果未找到,打印提示信息print("没有找到对象");
}
通过tag查找:
// 通过标签"player"在场景中查找对应的游戏对象
GameObject obj = GameObject.FindWithTag("player");// 检查是否成功找到对象
if(obj != null)
{// 如果找到对象,打印成功信息和该对象的名称    print("根据tag找到对象" + obj.name); 
}
else
{// 如果没有找到对应标签的对象,打印未找到信息print("根据tag没有找到对象");
}

得到某一个单个对象,目前有两种方法:一种是public从外部面板进行关联;另一种是通过API去找。

②查找多个对象:

找多个对象的API只能是通过tag去找多个,没有通过名字找多个的方法。通过tag找多个对象也是只能找到激活的对象,无法找到失活对象。

// 在场景中查找所有标签为"player"的游戏对象
// 返回一个包含所有匹配对象的数组
GameObject[] objs = GameObject.FindGameObjectsWithTag("player");// 打印找到的对象数量
print("找到tag为player对象的个数为" + objs.Length);

注意:

“万物之父” 指的是 C# 语言中的所有类型的终极基类——System.Object 类。Unity中的Object和C#中的有区别。

Unity中的Object不是指的是万物之父Object,它的命名空间在UnityEngine中的Object类,是集成万物之父的一个自定义类。

C#中的Object的命名空间在System中。

3.找场景中挂载的某一个脚本对象

// 在场景中查找第一个激活的 Test 类型组件
Test foundTest = GameObject.FindObjectOfType<Test>();// 安全检查,确保找到组件后再访问其属性
if(foundTest != null)
{// 打印该组件所在游戏对象的名称print(foundTest.gameObject.name);
}
else
{print("未找到 Test 类型的组件");
}

4.实例化对象(克隆对象)的方法

实例化(克隆)对象的作用是根据一个GameObject对象,创建出一个和它一模一样的对象。

GameObject.Instantiate(obj);

5.删除对象的方法

①:

GameObject.Destroy(obj);

②括号中第二个参数代表延迟几秒后删除:

GameObject.Destroy(obj,5);

③Destroy不仅可以删除对象,也可以删除脚本:

GameObject.Destroy(this.GameObject);

注意:Destroy方法不会马上移除对象,只是给这个对象加了个移除标识。一般情况下,它会在下一帧时把这个对象移除并从内存中删除。如果没有特殊要求,一定要马上移除一个对象的话,建议使用以上的Destroy方法,因为是异步的可以降低发生卡顿的几率。

 ④立即把对象从内存中移除:

GameObject.DestroyImmediate(obj);

如果是继承MonoBehavior的类,可以不用写GameObject:

Destroy(obj);
DestroyImmediate(obj);

⑤过场景不移除:

默认情况下,在切换场景时,场景中对象都会被自动删除。如果希望某个对象过场景不被删除,可以使用:

GameObject.DontDestroyOnLoad(this.gameObject);

如果是继承MonoBehavior的,也可以直接写:

DontDestroyOnLoad(this.gameObject);

三、常用的GameObject中的成员方法

1.创建空物体

new一个GameObject就是在创建一个空物体

// 创建一个名为"创建的空物体"的新游戏对象
GameObject obj = new GameObject("创建的空物体");// 在创建的同时为其添加 Test 组件
// typeof(Test) 指定要添加的组件类型
GameObject obj = new GameObject("创建的空物体", typeof(Test));

2.为对象添加脚本

继承MonoBehavior的脚本,是不能去new。如果想要动态地添加继承MonoBehavior的脚本在某一个对象上,直接使用GameObject提供的方法即可:

// 通过Type添加组件并进行类型转换
// 在obj游戏对象上添加一个Test类型的组件
// AddComponent(typeof(Test)) 返回Component类型
// 使用 as 运算符将返回的Component安全转换为具体的Test类型
Test t = obj.AddComponent(typeof(Test)) as Test;

使用泛型方法更方便:

// 在游戏对象obj上添加一个Test类型的组件
// 方法会返回新添加的Test组件的引用,并直接赋值给变量t
Test t = obj.AddComponent<Test>();

通过返回值,可以得到加入的脚本信息来进行一些处理。得到的脚本成员的方法和继承MonoBehavior的类得到脚本的方法一致。

3.标签比较

以下两种方法是一样的:

if(this.gameObject.CompareTag("Player"))
{print("对象的标签是Player");
}
if(this.gameObject == "Player");
{print("对象的标签是Player");
}

4.设置激活或失活

激活:

obj.SetActive(true);

失活:

obj.SetActive(false);

四、次要的GameObject中的成员方法

这些方法了解即可,不建议使用,效率比较低下。

1.通过广播和发送消息的形式让自己或别人执行某些行为方法。

通知自己执行什么行为,或命令自己执行Plan这个函数,会在自己身上挂载的所有脚本中去找这个名字的函数,有这个名字的函数就去执行。

// 向当前游戏对象发送名为"Plan"的消息
// 会调用该对象上所有脚本中名为 Plan 的无参数方法
// 如果找不到对应方法,会输出警告
this.gameObject.SendMessage("Plan");// 向当前游戏对象发送名为"Plan"的消息,并传递一个整数参数 199
// 会调用该对象上所有脚本中名为 Plan 且接受一个参数的方法
// 参数类型必须匹配(这里需要方法接受 int 类型参数)
this.gameObject.SendMessage("Plan", 199);

2.广播行为:让自己和自己的子对象执行。

this.gameObject.BroadcastMessage("函数名");

3.向父对象和自己发送消息并执行。

this.gameObject.SendMessageUpwards("函数名");
http://www.dtcms.com/a/447184.html

相关文章:

  • 做律师网站导购网站怎么建设
  • 佛山优化网站排名福建省港航建设发展有限公司网站
  • 上杭网站设计公司安阳市有几个区几个县
  • XGBoost工业级痛点解决:样本不平衡+大数据优化+部署落地
  • CCF-CSP认证考试 202312-4 宝藏 题解
  • 个人网站备案号被注销了网站运营优化推广
  • Python数据清洗实战指南
  • s网站优化西安咪豆网站建设公司
  • 怀柔建设网站公司公司网站后台维护怎么做
  • 网站开发 ssh 菜鸟东阳网络科技有限公司
  • 宁波网站建设费用网站运营岗位介绍
  • 公司的网 网站打不开怎么办网络营销宏观环境有哪些
  • 网站建设中扁平化结构chrome浏览器官网入口
  • 网站建设属于什么合同做网站游戏推广赚钱
  • asrpro2.0天问语音模块搭配STM32(STM32F103c8t6)-杨桃电子开发板
  • 网站发布时间更改wordpress大前端哪个好
  • php租车网站网站软件下载大全
  • LangChain 学习 - LangChain 引入(LangChain 概述、LangChain 的使用场景、LangChain 架构设计)
  • 门户网站是网络表达吗杭州建设网电焊工报名入口
  • 公司网站建设计入什么明细科目全国行业名录搜索系统
  • 设计网站企业网站建设公司成都哪家做网站做的好
  • 一如:真实的觉现
  • 做配色的网站百度竞价点击工具
  • 东莞品牌网站建设费用网站关键词重复
  • 郑州睿网站建设成都旧房改造装修公司哪家好
  • 网站 利润成都市建设网站公司
  • 宿州网站建设零聚思放心wordpress 博主认证
  • 设计网站如何推广门户网站app开发
  • 东莞php网站建设广元建设厅官方网站
  • ClaudeCode真经第六章:问题排查与故障处理