Unity 产生各不相同的随机数

1. 网上很多方法都说用时间种子来解决,但是在极短的时间内,这种方法没效

Random r = new Random(DateTime.Now.Millisecond);

Random Counter = new Random(unchecked((int)(DateTime.Now.Ticks >> ctr)));

Random Counter = new Random(System.Guid.NewGuid().GetHashCode());

2. 用Random结合Hashtable才完美实现我想要的效果

以下是随机生成3个小于3的各不相同正整随机数的代码,生成的结果是0 1 2, 2 0 1等,而不会出现像 0 0 1 这样有重复数的情况

string testStr;
    void OnGUI()
    {
        if (GUILayout.Button("产生随机数"))
        {
            testStr = "";

            Hashtable hashtable = new Hashtable();
            System.Random rm = new System.Random();
            int RmNum = 3;
            for (int i = 0; hashtable.Count < RmNum; i++)
            {
                int nValue = rm.Next(3);
                if (!hashtable.ContainsValue(nValue))
                {
                    hashtable.Add(nValue, nValue);    //Add(key,value)
                    testStr += nValue + " ";
                }
            }
        }
        GUILayout.Label(testStr);
    }
时间: 2024-10-14 21:56:32

Unity 产生各不相同的随机数的相关文章

Unity基础 随机数的使用

脚本语言: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

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

1. 网上很多方法都说用时间种子来解决,但是在极短的时间内,这种方法没效 Random r = new Random(DateTime.Now.Millisecond); Random Counter = new Random(unchecked((int)(DateTime.Now.Ticks >> ctr))); Random Counter = new Random(System.Guid.NewGuid().GetHashCode()); 2. 用Random结合Hashtable才完

Unity 可重复随机数

出处 https://blogs.unity3d.com/cn/2015/01/07/a-primer-on-repeatable-random-numbers/   (英文原版) http://www.manew.com/thread-37144-1-1.html 不管创建什么样的程序,几乎都离不开随机数.如果您想多次生成同样的结果,这就需要随机数是可重复的. 在本片文章中我们将介绍使用关卡或世界的生成作为示例,但其中的原理也适用于许多其它内容,例如程序纹理.模型.音乐等等.然而,这并不适用于

【Unity】11.7 布料

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种布料组件:交互布料(Interactive Cloth).蒙皮布料(Skinned Cloth).为人形动画添加布料组件后,就可以利用布料渲染器将其渲染出来. 二.交互布料(Interactive Cloth) 交互布料组件(Interactive Cloth)可在一个网格上模拟类似布料的行为状态,如果希望在场景中使用布料,可以用这个组件来实现. 1.添加交互布料组件 添加交互布料组件的方法如下:

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t

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

者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染器,触发器以及粒子的混合体来创造这一水体效果,最终得到可运用于你下款游戏的水纹和水花.这里包含了Unity样本源,但你应该能够使用任何游戏引擎以相同的原理执行类似的操作. 设置水体管理器 我们将使用Unity的一个线性渲染器来渲染我们的水体表面,并使用这些节点来展现持续的波纹. unity-water-linerenderer(from gamedevelopment) 我们将

Unity 3D实现帧同步技术

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 现在竞技类网络游戏比较火,市面上也出现了很多这种类型的游戏竞赛,提到网络游戏就回避不了一个问题:同步技术,多个人在一个游戏场景围攻一个怪物或者说多人组队战斗等等.现在在移动端的游戏由

Unity API 解析 学习

1 Application类 2 Camera类 3 GameObject类 4 HideFlags类 5 Mathf类 6 Matrix4x4类 7 Object类 8 Quaternion类 9 Random类 10 Rigidbody类 11 Time类 12 Transform类 13 Vector2类 14 Vector3类 1 Application类 1 using UnityEngine; 2 using System.Collections; 3 4 public class

unity游戏之太空射击

由于在开发中遇到的问题需要较大的文字量描述,特此介绍开发的整个流程,并用红色标记所遇到的问题以及解决方法. 开发流程如下: 1. 下载游戏所需模型与素材并导入Unity. 2. 添加玩家飞机 在素材中添加玩家的飞机到层级视图(Hierarchy)中,并命名为player.层级视图 (Hierarchy) 包含当前场景中的每个游戏对象 (GameObject).有些是三维模型等资源文件的直接实例,其余是预设 (Prefabs) 实例,自定义对象构成游戏的绝大部分.预设 (Prefab) 是一种资源