unity 编程常用知识

一、新建C#代码文件,会自动生成类以及开始和更新函数,写好拖到左上角scene相应中的控制件上即可,切记不使用的代码文件在导出为安卓工程前要删掉,否则容易引起错误。
在这里插入图片描述

二、做AR项目,动态显示的text控件需要放在ImageTarget下面,Canvas会自动生成,且要选成world space模式,一般通过设置旋转90,弄成水平放置,因识别的图片是水平放置的。

在这里插入图片描述
三、获取文本对象的代码在start函数中,如下图,对应上例代码为:
// 获取文本对象
GameObject textObj = GameObject.Find(“ImageTarget/Canvas/textResult”);
textResult = textObj.GetComponent ();
在这里插入图片描述
文本控件的定义在此例中为全局的,在主类中为:Text textResult;
该代码挂在三维物体恐龙即RaptorAnimated上,获取此游戏对象不用简介路径了,直接find就行,代码如上图中的一样,为:
// 获取游戏对象
btnObj = GameObject.Find(“RaptorAnimated”);
文本控件动态赋值的时候,用其内部的text属性,如下:
textResult.text=“stop”;或textResult.text=asrResult;
其中asrResult定义为:string asrResult = string.Empty;
在这里插入图片描述
四、调试信息显示在windows平台有两种:一种是text文本动态显示如上条所示;另一种是Debug.Log更方便,不用定义直接使用(如上图),显示在UNITY底部状态栏中,如下:
在这里插入图片描述
但对于安卓平台的话,Debug.Log是无法使用的,只能用text文本动态显示.
五、用麦克风录音时,只能放在主线程,另开线程来录音行不通,所以想做实时语音控制,只能开启麦克风的true模式,并设定固定时长。函数如下:
//截取3秒的声音片段放到saveAudioClip剪辑片段中;
saveAudioClip = Microphone.Start(device, true, recordMaxLength, recordFrequency);//true 为连续录音,因此函数只能在主线程运行,所以开辟新的线程行不通,只能连续录音了!
在这里插入图片描述
另外自己写的音量测定GetMaxVolume以及语音识别函数_StartBaiduYuYin()也必须放到主线程中,因里面有一个相同的函数:saveAudioClip.GetData是自带的,必须放到主线程中。如下:
在这里插入图片描述
我放在了Update函数中实时监测语音命令StartCoroutine函数代表不被打断的意思。
六、平移和放大缩小用如下函数:
Vector3 transformValue = new Vector3();//定义平移向量
transformValue = Vector3.left * 0;
switch (state)
{
case 1://角色状态变小时,角色不断变小
flag = true;
scale -= 0.001f;
break;
case 2://角色状态变大时,角色不断变大
flag = true;
scale += 0.001f;
break;
case 3://角色状态向前时,角色不断向前缓慢移动
animator.Play(“WalkFW”);
transformValue = Vector3.forward * speed;//在android平台此句是向前的作用
//transformValue = Vector3.right * speed;//在windows平台此句是向前的作用
//transformValue = Vector3.forward * Time.deltaTime * speed;
break;
case 4://角色状态向后时。角色不断向后缓慢移动
animator.Play(“WalkS”);
transformValue = Vector3.back * speed;//在android平台此句是向后的作用
//transformValue = Vector3.left * speed;//在windows平台此句是向后的作用
//transformValue = Vector3.back * Time.deltaTime * speed;
break;
case 5://角色状态向左时。角色不断向右缓慢移动
animator.Play(“TurnLeft”);
//transformValue = Vector3.right * Time.deltaTime * speed;
break;
case 6://角色状态向右时,角色不断向左缓慢移动
animator.Play(“TurnRight”);
//transformValue = Vector3.left * Time.deltaTime * speed;
break;
case 7://角色状态停止
animator.Play(“idleLookAround”);
flag = false;
transformValue = Vector3.left * 0;
break;
}
btnObj.transform.Translate(transformValue, Space.World);//平移角色
if (flag)
btnObj.transform.localScale = new Vector3(1 * scale, 1 * scale, 1 * scale); 在这里插入图片描述
animator如此定义(参考下图):
Animator animator;
然后在starta函数中
//获取动画组件
animator = GetComponent(); 在这里插入图片描述
注:函数挂在恐龙上面。
当然也可以如下旋转平移:
在这里插入图片描述
部分定义如下:
在这里插入图片描述
头文件如下:
在这里插入图片描述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using System;

using System.Text.RegularExpressions;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Networking;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值