创建一个平面
贴图
创建一个脚本
GameObjectOperation.cs
using System.Collections; using System.Collections.Generic; using UnityEngine;public class GameObjectOperation : MonoBehaviour {GameObject[] capsuleArray = new GameObject[3];public GameObject cubeObject;// Start is called before the first frame updatevoid Start()//开始的时候执行{cubeObject.AddComponent<MouseEvents>();//给cube对象绑定一个鼠标事件的组件(另一个脚本)GameObject cubeObj = GameObject.CreatePrimitive(PrimitiveType.Cube);//利用脚本创建一个cubecubeObj.name = "Red_Cube";cubeObj.tag = "Cubes";//设置标签,待会儿要添加,以便查找cubeObj.GetComponent<Renderer>().lor = d;//调用渲染组件,把材质设成红色ansform.position += new Vector3(0, 1, 0);//位置往上移一点Debug.Log("the position of cube "ansform.position);//输出cube的位置GameObject sphereObj = GameObject.CreatePrimitive(PrimitiveType.Sphere);sphereObj.name = "Green_Sphere";sphereObj.tag = "Spheres";sphereObj.GetComponent<Renderer>().lor = ;ansform.position += new Vector3(5, 1, 0);capsuleArray[0] = GameObject.CreatePrimitive(PrimitiveType.Capsule);capsuleArray[0].name = "Capsule_red";capsuleArray[0].tag = "Capsules";capsuleArray[0].GetComponent<Renderer>().lor = d;capsuleArray[0].transform.position += new Vector3(-1, 6, 0);capsuleArray[1] = GameObject.CreatePrimitive(PrimitiveType.Capsule);capsuleArray[1].name = "Capsule_green";capsuleArray[1].tag = "Capsules";capsuleArray[1].GetComponent<Renderer>().lor = ;capsuleArray[1].transform.position += new Vector3(-1, 4, 0);//2->4放在上面capsuleArray[2] = GameObject.CreatePrimitive(PrimitiveType.Capsule);capsuleArray[2].name = "Capsule_blue";capsuleArray[2].tag = "Capsules";capsuleArray[2].GetComponent<Renderer>().lor = Color.blue;capsuleArray[2].transform.position += new Vector3(-1, 2, 0);//让它们三个串在一起GameObject cloneCube = Instantiate(cubeObj, new Vector3(0,3,0), Quaternion.identity);//创建对像的第三种方法,克隆一个对象:对象,位置坐标,旋转与否cloneCube.GetComponent<Renderer>().lor = Color.magenta;GameObject emptyObj = new GameObject("EMPTY_CUBE");//创建一个空对象Debug.Log("create empty" + emptyObj.name);}// Update is called once per framevoid Update()//每一帧都执行{if(Input.GetKey(KeyCode.A))//用键盘查找对象,按下A,改变cube颜色为黄{GameObject findObj = GameObject.Find("Red_Cube");//创建一个查找对象findObj.GetComponent<Renderer>().lor = llow;}if(Input.GetKey(KeyCode.S)){GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("Capsules");//查找一组对象,创建一个数组for(int i=0;i<gameObjects.Length;i++){gameObjects[i].GetComponent<Renderer>().lor = Color.white;}}if (Input.GetKey(KeyCode.D)){GameObject sphereobj = GameObject.FindWithTag("Spheres");sphereobj.GetComponent<Renderer>().lor = an;}if(Input.GetMouseButtonDown(0))//鼠标左键禁用脚本{cubeObject.SetActive(false);}if (Input.GetMouseButtonDown(1))//鼠标右键激活脚本{cubeObject.SetActive(true);}if(Input.GetButton("Jump")){Destroy(cubeObject);}} }
GameObjectOperation.cs 脚本执行效果:
A 通过标签查找,改变cube颜色为黄
S 通过标签查找,让数组中三个胶囊颜色变成白色
D 通过标签查找,让球体变成Cyan蓝。
鼠标左键 禁用脚本中设定的public类型的cube object对象(在unity界面中设置为cube)
鼠标右键 激活脚本中设定的public类型的cube object对象
空格键 销毁脚本中设定的public类型的cube object对象
创建一个空的对象 以绑定脚本 GameObjectOperation.cs
但是仅仅这样是不够的,会报错:
脚本中的Cube Object不能为空,否则就不能创建对象
Whatever,随便设置一个(最好设置为一个预先创建的cube),再点击运行,就成功了
利用脚本创建对象
一部分代码:
出现如下错误:
原因:标签未定义
解决方法:
结果:
创建数组存储游戏对象
创建游戏对象三种方法
1 构造函数
2 克隆函数
3 创建函数
以上三种方法都可以创建游戏物体,但是他们在使用的时候还是有区别的。
构造方法用于创建一个空的物体。
Instantiate可以实例化各种这样的东西。实例化特效、实例化游戏角色。
Createprimitive创建基本图形或者游戏中已经有的物体。
销毁对象
先创建一个cube对象
把脚本的cube object设为cube
点击空格即可销毁
代码:
public GameObject cubeObject;if(Input.GetButton("Jump")) {Destroy(cubeObject); }
鼠标事件处理:
鼠标进入,鼠标悬浮,鼠标退出,颜色都要改变
创建一个MouseEvents.cs
using System.Collections; using System.Collections.Generic; using UnityEngine;public class MouseEvents : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}private void OnMouseEnter(){gameObject.GetComponent<Renderer>().lor = Color.blue;//鼠标进入改成蓝色}private void OnMouseOver(){gameObject.GetComponent<Renderer>().lor += new Color(0.1f, 0, 0) * Time.deltaTime;//鼠标悬浮颜色渐变,三个参数对应RGB}private void OnMouseExit(){gameObject.GetComponent<Renderer>().lor = llow;//鼠标退出颜色改成黄色}}
鼠标悬浮时颜色渐变得比较慢
本文发布于:2024-01-30 18:33:03,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170661078421996.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |