脚本语言:C#

  一个比较常用的例子是游戏中的主角碰到场景中的NPC时,NPC会随机做出反应,例如有50%几率来友好的致敬,25%几率走开,20%几率反身攻击和%%的几率赠送礼物。

创建一个NPCTest脚本,用于模拟NPC动作:

using UnityEngine;
using System.Collections; public class NPCTest : MonoBehaviour { //NPC动作几率
float[] probArray = {0.5f , 0.25f , 0.2f , 0.05f};
int probValue; //NPC选择值 // Use this for initialization
void Start () {
} // Update is called once per frame
void Update () {
} //选择函数,返回NPC的选项下标值
int Choose(float[] probe)
{
float total = 0.0f;
for (int i=; i < probe.Length; i++) {
total += probe[i];
} // Random.value方法返回一个0—1的随机数
float randomPoint = Random.value * total; for (int i=; i < probe.Length; i++) {
if(randomPoint<probe[i])
return i;
else
randomPoint -= probe[i];
} return probe.Length - ;
} void OnGUI(){
if( GUI.Button(new Rect(,,,),"Click") )
{
probValue = Choose(probArray); switch(probValue){
case :
Debug.Log ("NPC向我致敬!");
break;
case :
Debug.Log ("NPC离开了!");
break;
case :
Debug.Log ("NPC攻击我了!");
break;
case :
Debug.Log ("NPC给我钱了!");
break;
default:
Debug.Log("我没有碰到NPC");
break;
}
}
}
}

点击Game视图中的Click按钮,可以看到打印出来的数据:

参考链接:

  更为详细的介绍:http://blog.csdn.net/luyuncsd123/article/details/16919547

Unity 随机数的使用的更多相关文章

  1. Unity 随机数与随机种子

    随机数几乎应用于游戏开发的方方面面,例如,随机生成的地图,迷宫,怪物属性等,在Unity中,使用随机数非常方便: // // 摘要: // Return a random integer number ...

  2. Unity3D_(API)Random随机数

    Unity随机数Random官方文档: 传送门 一.生成一个随机数 二.Random.InitState()生成伪随机数 三.官方文档中常用的方法 创建一个Cube用来挂载Random_Gary.cs ...

  3. Unity 可重复随机数

    出处 https://blogs.unity3d.com/cn/2015/01/07/a-primer-on-repeatable-random-numbers/   (英文原版) http://ww ...

  4. Unity 产生各不相同的随机数

    1. 网上很多方法都说用时间种子来解决,但是在极短的时间内,这种方法没效 Random r = new Random(DateTime.Now.Millisecond); Random Counter ...

  5. [Unity菜鸟] 产生各不相同的随机数

    1. 网上很多方法都说用时间种子来解决,但是在极短的时间内,这种方法没效 Random r = new Random(DateTime.Now.Millisecond); Random Counter ...

  6. 自己从0开始学习Unity的笔记 III (C#随机数产生基础练习)

    自己开始尝试弄一下随机数,照着方法,自己做了个英雄打怪兽的测试 int heroAttack; ; ; Random attack = new Random(); //初始化一个随机数的类 heroA ...

  7. [Unity][Heap sort]用Unity动态演示堆排序的过程(How Heap Sort Works)

    [Unity][Heap sort]用Unity动态演示堆排序的过程 How Heap Sort Works 最近做了一个用Unity3D动态演示堆排序过程的程序. I've made this ap ...

  8. 使用Unity创造动态的2D水体效果

    者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染器,触发器以及粒子的混合体来创造这一水体效果,最终得到可运用于你下款游戏的水纹和 ...

  9. C#之使用随机数

    1.C#自带随机数函数 using System; System.Random ran = new System.Random();int n = ran.Next(100, 1000);//产生10 ...

随机推荐

  1. Qt 学习之路 :Repeater

    前面的章节我们介绍过模型视图.这是一种数据和显示相分离的技术,在 Qt 中有着非常重要的地位.在 QtQuick 中,数据和显示的分离同样也是利用这种“模型-视图”技术实现的.对于每一个视图,数据元素 ...

  2. [转] 用管道获得shell 命令的输出

    用管道: 通过fgets(buf, n, ptr)buf就可以得到命令“ps -ef"一样的信息, 读帮助”man popen": char *cmd = "ps -ef ...

  3. Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...

  4. 知识点摸清 - - function()——JavaScript 函数名后什么时候加括号,什么时候不

    加括号——调用函数 只要是要调用函数执行的,都必须加括号. 此时,function()实际上等于函数的返回值.(没有返回值也已经执行了函数体内的行为).就是说,只要加括号的,就代表将会执行函数体代码. ...

  5. Weex 学习教程

    一.环境搭建 1.安装Node,官网下载(http://nodejs.org/) 2.查看npm安装版本,终端输入:npm -v版本不能低于2.15.1 3.安装weex-toolkit,终端输入:n ...

  6. Android开发中用友盟做分享的一些坑

    仅限于用5.1.4版本的 按照友盟分享的API在自己的代码中修改: 1.微信分享需要打包APK文件,数字签名与微信开发申请的要一致 2.此name中属性不能修改 value为友盟的申请的appkey ...

  7. Uri、UriMatcher、ContentUris详解

    http://blog.csdn.net/feng88724/article/details/6331396 1.Uri 通用资源标志符(Universal Resource Identifier, ...

  8. NSCondition的用法,NSCondication实现线程同步,生产者消费问题实现(转载)

    NSCondition的用法 使用NSCondition,实现多线程的同步,即,可实现生产者消费者问题. 基本思路是,首先要创建公用的NSCondition实例.然后: 消费者取得锁,取产品,如果没有 ...

  9. Linux sz rz

    借助XShell,使用linux命令 root 账号登陆: su root 1.编译安装 wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar. ...

  10. 64位系统下System32文件系统重定向

    前言 因为一次偶然的机会,需要访问系统目录“C:/Windows/System32“文件夹下的内容,使用的测试机器上预装了win7 64系统.在程序运行中竟然发生了该文件路径不存在的问题!!通过查看网 ...