多线程技术-----1

(1)创建一个空对象,设置空对象的位置,如图1;创建一个Sphere对象,然后拖曳到空对象上,使其成为空对象的子对象,设置Sphere对象的位置和大小,如图2;


                                                               图1


   

                                                            图2

(2)创建一个Script文件夹。创建一个脚本,命名为XuanZhuan。将创建的XuanZhuan脚本拖曳到空对象上。

       脚本代码如下:


                                              该脚本主要功能为使小球围绕空对象不断旋转。



(3)创建用于进行大量计算 的脚本。在Script文件夹下创建一个脚本,命名为XianShi。将创建的XianShi脚本拖曳到主摄像机对象上。

       代码如下:

using System.Collections;
using UnityEngine;
using System.Threading;
using System;
public class XianShi : MonoBehaviour {
public GUIStyle myStyle;
object n=new object();
long shu=0;
long xian=0;
public float x,y,x1,y1;
public float xx,yy,xx1,yy1;
public float i,j,i1,j1;
public float ii,jj,ii1,jj1;


void Update () {
lock (n) {
xian = shu;
}
}
void OnGUI(){
GUI.skin.button.fontSize=50;
GUI.Label(new Rect(xx,yy,xx1,yy1),xian.ToString(),myStyle);
if(GUI.Button(new Rect(x,y,x1,y1),"另起线程")){
Thread a=new Thread(run);
a.Start();
}
if(GUI.Button(new Rect(i,j,i1,j1),"主线程")){
run();
}
if(GUI.Button(new Rect(ii,jj,ii1,jj1),"归零")){
lock(n){
shu=0;
}
}
}
void run()
{
long te=0;
for(long i=0;i<100000000;i++)
te+=1;

lock(n)
   {
shu=te;
}
}
void run1(object o)
{
int a = (int)o;
int c = Convert.ToInt32 (o);


long te = 0;
for(long i=0;i<100000000;i++)
{
te += 1;
}
lock(n)
{
shu=te;
}
    }
}

Unity场景Main Camera对象Inspector界面下改一下参数。各参数默认的数值为0。不改的话运行时你看不到那三个“主线程”,“另起线程”,“归零”,按钮。


(4)完成。单价运行按钮。







首先单击“主线程“按钮,发现整个游戏界面卡几秒钟,小球停顿一下再转动。这是因为大量计算长时间占用主线程使游戏卡顿。计算完成后小球恢复转动,屏幕上显示出计算结果。

然后单击“归零”按钮使数据归零,再单击“另起线程“按钮,发现游戏正常运行,小球不断转动,这是因为大量计算另起线程进行不占用主线程。过会儿大量计算完成后屏幕上显示出计算结果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值