一、介绍

目的:通过一个简单的例子(鼠标点击,使立方体旋转和变色)熟悉Unity中C#脚本的编写。

软件环境:Unity 2017.3.0f3 、 VS2013。

二、C#脚本实现

1,启动Unity,创建游戏场景。【关于Unity基本操作请点击 Unity入门教程(上)进行了解】

2,在Assets目录下创建文件夹,用于存放游戏的各种资源。

3,创建一个名为CubeRotate的C#脚本并拖放到场景的方块上,调整好相机位置。

4,双击打开脚本,在脚本中加入鼠标相关函数

5,设定一个功能:当鼠标光标移动到物体上时,物体材质色彩变为黄色。

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class CubeRotate : MonoBehaviour { private bool bCube1 = false;
private bool bCube2 = false;
private Color OldColor; // Use this for initialization
void Start () {
OldColor = this.gameObject.GetComponent<Renderer>().material.color; //获取物体的原始颜色
} // Update is called once per frame
void Update () { } void OnMouseOver()
{
this.gameObject.GetComponent<Renderer>().material.color = Color.yellow; //立方体变为黄色
bCube1 = true;
}
void OnMouseExit()
{
this.gameObject.GetComponent<Renderer>().material.color = OldColor; //立方体变为原始颜色
bCube1 = false;
}
void OnMouseDown()
{
if(bCube1)
{
bCube2 = true;
}
} }

代码解读:当鼠标光标移动到物体上时,物体变为黄色,同时将一个初始值为false的bCube1的值变为true;当鼠标光标离开后,物体材质色彩还原,bCube1为false;当按下鼠标左键,且bCube1的值为true,bCube2的值为真。

注:OnMouse函数都是执行一次的函数,因此不能将与动画有关的控制函数放于其内执行,所以通常会用布尔值开关来控制Update函数中的动画函数。

6,在Update函数里实现Cube转动

    void Update () {
if(bCube2) //当Cube为真时
{
this.gameObject.transform.Rotate(Vector3.up * Time.deltaTime * ); //Cube转动
}
}

因为Cube转动是持续性的,所以把旋转脚本写在Update函数里面实现Cube转动。

7,更改Spotlight的强度

    // Use this for initialization
void Start () {
OldColor = this.gameObject.GetComponent<Renderer>().material.color; //获取物体的原始颜色
GameObject.Find("Spotlight").GetComponent<Light>().intensity = 1.0F; //获取Spotlight的强度属性
} // Update is called once per frame
void Update () {
if(bCube2) //当Cube为真时
{
this.gameObject.transform.Rotate(Vector3.up * Time.deltaTime * ); //Cube转动
if(GameObject.Find("Spotlight").GetComponent<Light>().intensity < 8.0F)
{
GameObject.Find("Spotlight").GetComponent<Light>().intensity += 0.05F;
}
}
}

8,UGUI的使用->添加Text组件

9,添加控制Text显示的脚本

使用UGUI组件必须在C#脚本中添加UI的命名空间,这样我们才能引用。当bCube2的值为真时,Text组件显示“Cube正在旋转中...”,所以在Update函数的if语句里面应添加以下脚本

            GameObject.Find("Text").GetComponent<Text>().text = "Cube正在旋转...";

10,点击“Play”按钮,运行游戏

鼠标点击前:

鼠标点击后:

11,完整脚本代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //添加UI的命名空间 public class CubeRotate : MonoBehaviour { private bool bCube1 = false;
private bool bCube2 = false;
private Color OldColor; // Use this for initialization
void Start () {
OldColor = this.gameObject.GetComponent<Renderer>().material.color; //获取物体的原始颜色
GameObject.Find("Spotlight").GetComponent<Light>().intensity = 1.0F; //获取Spotlight的强度属性
} // Update is called once per frame
void Update () {
if(bCube2) //当Cube为真时
{
this.gameObject.transform.Rotate(Vector3.up * Time.deltaTime * ); //Cube转动
GameObject.Find("Text").GetComponent<Text>().text = "Cube正在旋转..."; if(GameObject.Find("Spotlight").GetComponent<Light>().intensity < 8.0F)
{
GameObject.Find("Spotlight").GetComponent<Light>().intensity += 0.05F;
}
}
} void OnMouseOver()
{
this.gameObject.GetComponent<Renderer>().material.color = Color.yellow; //立方体变为黄色
bCube1 = true;
}
void OnMouseExit()
{
this.gameObject.GetComponent<Renderer>().material.color = OldColor; //立方体变为原始颜色
bCube1 = false;
}
void OnMouseDown()
{
if(bCube1)
{
bCube2 = true;
}
} }

三、总结

通过学习我们了解了C#脚本对于游戏对象的作用,中间还学习了UGUI的使用。

Unity脚本语言的综合应用并不是通过一个实例就能够达到熟练的程度,还需要自己不断地练习和探索,不断的尝试bug和及时总结。

通过C#脚本实现旋转的立方体的更多相关文章

  1. OpenGL4-绘制旋转的立方体

    代码下载 #include "CELLWinApp.hpp"#include <gl/GLU.h>#include <assert.h>#include & ...

  2. No.5 - 纯 CSS 制作绕中轴旋转的立方体

    body{ background-color: #000; margin:; padding:; } main{ perspective: 800px; } .cube{ transform-styl ...

  3. WPF学习系列 绘制旋转的立方体

    我是一年经验的web程序员,想学习一下wpf,比较喜欢做项目来学习,所以在网上找了一些项目,分析代码,尽量能够做到自己重新敲出来 第一个项目是 中间的方块会不停的旋转. 第一步,新建wpf项目 第二步 ...

  4. Unity脚本-Rotate旋转相关知识点

    1,Transform旋转   transform.Rotate(X, Y, Z);//分别绕X,Y,Z轴旋转,可写为绕某个轴旋转,栗子transform.Rotate(0, 90, 0);   tr ...

  5. CSS3 旋转3D立方体

    <meta charset="utf-8"> <style> *{ margin:0px; padding:0px; } @-webkit-keyframe ...

  6. 旋转3D立方体

    <!DOCTYPE html><html><head> <title>css-3d-盒子</title> <meta charset= ...

  7. css3制作旋转立方体相册

    首先让我们来看一下最终效果图: 当鼠标放在图片上是介个样子滴: 是不是觉得很好看?那接下来就一起制作吧! 我个人觉得编程,首先是思路,然后是代码,一起分析一下这个效果的思路. 1.背景颜色,它属于一种 ...

  8. 纯CSS3超酷3D旋转立方体动画特效

    简要教程 这是一款神奇的纯 CSS3 立方体动画特效插件.使用CSS3来制作动画效果已经成为WEB前端开发的一种时尚,从简单的颜色和尺寸动画,到复杂的旋转.翻转动画, CSS3 展现了它无穷的魅力.使 ...

  9. css3之3D 旋转立方体与哆啦A梦

    主要记录两个css3 3D转换的示例   ㈠哆啦A梦 三个哆啦A梦的图片,分别让其围绕X轴,Y轴,Z轴旋转60度,鼠标放上开始发生变化. 具体代码如下图所示: <!DOCTYPE html> ...

随机推荐

  1. hdu 1217 Arbitrage (最小生成树)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1217 /************************************************* ...

  2. 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁

    在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 01.乐观锁 vs 悲观 ...

  3. .NET CORE EF 框架调用存储过程

    ; //多个参数多表组合值 SqlParameter[] Param = { new SqlParameter("@UserId", System.Data.SqlDbType.V ...

  4. 灾备系统的评判指标:RTO、RPO

    RTO(RecoveryTime Object)是指灾难发生后,从IT系统崩溃导致业务停顿之刻开始,到IT系统恢复至可以支持各部门运作,业务恢复运营之时,此两点之间的时间段称为RTO. RPO(Rec ...

  5. webpack配置提取公共代码

    公共代码提取功能是针对多入口文件的: 背景:在pageA.js和pageB.js中分别引用subPageA.js和subPageB.js webpack.config.js文件: var path = ...

  6. CSS实现:标题两侧画线效果

    如图: html代码: <div class="detail-news"> <h5 class="detail-news-title"> ...

  7. Redis之 命令行 操作

    一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符  *.?.[] (2)randomkey:返回随机key (3)type key:返回key存储的类型 ...

  8. Flask简介,安装,demo,快速入门

    1.Flask简介 Flask是一个相对于Django而言轻量级的Web框架. 和Django大包大揽不同,Flask建立于一系列的开源软件包之上,这其中 最主要的是WSGI应用开发库Werkzeug ...

  9. VMWare: eth0: error fetching interface information : device not found

    VMWare: eth0: error fetching interface information : device not found  今天在VMware上新搭建的Redhat Linux 64 ...

  10. org.apache.hadoop.hbase.MasterNotRunningException解决策略

    执行HBase时常会遇到个错误,我就有这种经历. ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 检 ...