Unity 3d 游戏对象的创建与销毁 与 鼠标事件

阅读: 评论:0

Unity 3d 游戏对象的创建与销毁 与 鼠标事件

Unity 3d 游戏对象的创建与销毁 与 鼠标事件

创建一个平面

贴图

创建一个脚本

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小时内删除。

标签:鼠标   对象   事件   游戏   Unity
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23