热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity3D开发C#脚本语言的一些基础用法

Unity中C#语言的一些基础用法本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验

Unity 中C#语言的一些基础用法


本文提供全流程,中文翻译。

Chinar坚持将简单的生活方式,带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)

  • 1
    • Lerp —— 线性插值
  • 2
    • LoadScene —— 载入场景
  • 3
    • Gizmos —— 小物件
  • 4
    • Normalize —— 向量
  • 5
    • RelativeVelocity —— 相对速度
  • 6
    • AudioSource —— 音频源
  • 7
    • CameraFollow —— 相机跟随,插值
  • 8
    • String Split —— 字符串分割
  • 9
    • Toggle/Button|AddListener —— Toggle/按钮添加监听
  • 支持
    • May Be —— 搞开发,总有一天要做的事!


1

Lerp —— 线性插值



Mathf —— 数学运算函数库

.Abs —— 函数,返回的是一个 float 值,返回的是一个绝对值

true); //在Scene视窗下绘制一个图片(位置,名称.格式 ,是否允许扩展)Debug.DrawLine(transform.position, new Vector3(0, 10, 0), Color.green); //划线(开始位置,方向,颜色)
}

这里写图片描述


4

Normalize —— 向量


Vector3.Distance(transform.position,RightPos.position)>MaxDis

三维向量.距离(当前位置,目标位置) > 最大距离

举个栗子黑白88

if (Vector3.Distance(transform.position,RightPos.position)>MaxDis)//如果大于设定距离MaxDis
{Vector3 pos = (transform.position - RightPos.position).normalized;//单位化向量,求得方向pos *= MaxDis;//给 pos 赋值,乘等于MaxDistransform.position = pos + RightPos.position;//当前位置赋值:最大距离+起点坐标点的位置
}


5

RelativeVelocity —— 相对速度


collision.relativeVelocity.magnitude > MaxSpeed

碰撞物体的.相对速度.大小 > 最大速度

举个栗子黑白88

///


/// 触发检测
///

///
private void OnCollisionEnter2D(Collision2D collision)
{if (collision.relativeVelocity.magnitude > MaxSpeed) //如果相对速度.大小>最大速度{Destroy(gameObject); //直接死亡}else if (collision.relativeVelocity.magnitude > MinSpeed && collision.relativeVelocity.magnitude //相对速度在4-8之间{Render.sprite = HurtSprite; //更换图片,受伤}
}

6

AudioSource —— 音频源


AudioSource.PlayClipAtPoint(clip, transform.position);

音频源.在指定位置播放裁剪音效(音效,位置)

举个栗子黑白88

public AudioClip HurtClip; //受伤音效void Start()
{AudioPlay(HurtClip);//播放受伤音效
}///


/// 播放音效
///

///
public void AudioPlay(AudioClip clip)
{AudioSource.PlayClipAtPoint(clip, transform.position); //静态方法:播放音效
}

7

CameraFollow —— 相机跟随,插值


Mathf.Clamp(posX, 0, 18)

数学函数.范围(限定目标,0,到 18之间)

举个栗子黑白88


///


/// 相机在指定范围跟随
///

private void CameraFollow()
{//记录Eva的横坐标float posX = transform.position.x;//相机当前位置 = 插值(当前相机位置,目标位置(Mathf.Clamp-限定范围:(限定posX,0,18之间))Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, new Vector3(Mathf.Clamp(posX, 0, 18), Camera.main.transform.position.y, Camera.main.transform.position.z), SmoothFlo * Time.deltaTime);}

8

String Split —— 字符串分割


例如一堆物体名字分别为:
Test-1
Test-2
Test-3
Test-4
Test-5

Split(‘-‘)函数:返回值为一个String数组

用-拆分,输出的值为: 对应数组中:
String[0]:对应Test
String[1]:对应1,2,3,4,5

举个栗子黑白88

SkinnedMeshRenderer[] parts = sourceTransform.GetComponentsInChildren(); //获取所有带有siki的物体位置信息,存入parts
foreach (var part in parts)//遍历蒙皮网格数组中的每一个元素
{string[] nameStrings &#61; part.name.Split(&#39;-&#39;); //记录名字&#xff0c;用-拆分&#xff0c;输出的值为: “Test-1”----对应数组中------0:"Test" 1:"1"if (!data.ContainsKey(nameStrings[0])) //如果字典GirlData中不包含 第一个资源预设下的子物体的名字{GameObject partObj &#61; new GameObject(); //实例化一个空物体partObj.name &#61; nameStrings[0]; //给物体改名partObj.transform.parent &#61; target.transform; //设置父物体mydic.Add(nameStrings[0], partObj.AddComponent()); //把骨骼target身上的骨骼信息存起来data.Add(nameStrings[0], new Dictionary<string, SkinnedMeshRenderer>()); //存到字典中}data[nameStrings[0]].Add(nameStrings[1], part); //存储所有的skin信息到字典
}


9

Toggle/Button|AddListener —— Toggle/按钮添加监听


需要引用命名空间&#xff1a;using UnityEngine.UI;

举个栗子黑白88

private Toggle MyToggle;//自身的Toggle组件///


/// 初始化方法
///

void Start()
{if (gameObject.name &#61;&#61; "SaveButton") //如果按钮名为&#xff1a;SaveButton{Button but &#61; GetComponent

转载于:https://www.cnblogs.com/chinarbolg/p/9601466.html


推荐阅读
author-avatar
UNESCO媒介与女性教席走_890
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有