unity3d-多媒体与网络
1、音乐
unity3d 共支持4种音乐的格式文件
aiff:适用于较短的音乐文件,可用于游戏音效
wav:适用于较短的音乐文件,可用于游戏音效
mp3:适用于较长的音乐文件,可用于游戏音乐
ogg:适用于较长的音乐文件,可用于游戏音乐
播放音乐要使用音乐源组件:AudioSource,
创建一个空对象,并添加AudioSource组件(GameObject ---> Audio ---> AudioSource)
可以通过Play() Pause() Stop() 来控制音乐播放,暂停,停止等操作,看代码。比较简单
using UnityEngine;
using System.Collections; /// <summary>
/// 测试播放音乐
/// </summary>
public class playAudio : MonoBehaviour
{ //音乐文件
public AudioSource music;
public AudioClip ad;
public float musicVolume;
// Use this for initialization
void Start()
{
//设置默认音量
musicVolume = 0.5f;
} // Update is called once per frame
void Update()
{ } void OnGUI()
{
//添加音乐按钮
if (GUILayout.Button("播放音乐"))
{
//AudioSource.PlayClipAtPoint(ad, transform.position); //当前是否播放音乐
if (!music.isPlaying)
{
//播放音乐
music.Play();
}
}
//关闭音乐按钮
if (GUILayout.Button("关闭音乐"))
{
if (music.isPlaying)
music.Stop();
}
//暂停音乐
if (GUILayout.Button("暂停音乐"))
{
if (music.isPlaying)
music.Pause();
} //创建一个用于动态修改音乐音量的滑动条
musicVolume = GUILayout.HorizontalSlider(musicVolume, , ,GUILayout.Width());
GUILayout.Space();
GUILayout.Label("当前音量:" + musicVolume * + "%"); //设置当前音乐的音量
if (music.isPlaying)
{
music.volume = musicVolume;
}
}
}
当然。如果你是把音乐绑定在角色上。可以直接定义一个声音片段
public AudioClip ad; AudioSource.PlayClipAtPoint(ad, transform.position); :AudioClip,
通过AudioSource.PlayClipAtPoint(ad, transform.position);播放
2、视频
在unity3d中。需要使用电影纹理 MoveTexture来添加游戏视频,unity支持的视频格式为:.mov、.mpg、.mepg、.mp4、.avi、.asf
把视频拖拽到unit3d中。如果你发现报错
因为你没有安装:QuickTime Player。安装后。重启unity3d.。重新拖拽视频。uniyt3d会自动生成电影纹理
密钥:3b1z
最后生成了纹理
视频跟音乐一样,也可以通过Play() Pause() Stop() 来控制音乐播放,暂停,停止等操作,看演示代码
using UnityEngine;
using System.Collections; /// <summary>
/// 测试GUI播放视频和游戏对象播放视频
/// </summary>
public class playdy : MonoBehaviour
{ //电影纹理
public MovieTexture moveTexture; // Use this for initialization
void Start()
{
//设置当前对象的主纹理为电影纹理
renderer.material.mainTexture = moveTexture;
//设置电影纹理播放模式为循环
moveTexture.loop = true; } // Update is called once per frame
void Update()
{ }
void OnGUI()
{
//GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), moveTexture); if (GUILayout.Button("播放/继续"))
{
// 播放/继续 视频
if (!moveTexture.isPlaying)
{
moveTexture.Play();
}
}
if (GUILayout.Button("暂停播放"))
{
moveTexture.Pause();
}
if (GUILayout.Button("停止播放"))
{
moveTexture.Stop();
}
}
}
当然。你也可以通过GUI绘图的方式来显示视频
GUI.DrawTexture(new Rect(, , Screen.width, Screen.height), moveTexture);
但GUI播放的效率要比在游戏对象中播放要低一些。
3、网络
unity提供了WWW下载类,它的原理是以GET请求的形式向服务器请求数据,然后等服务器返回,在向服务器请求数据时,将请求的地址传入其构造函数即可开始下载,
在下载过程中,可以使用yield()方法或者isDone()方法来判断下载是否完成。目前unity只支持PNG和JPG类型的贴图文件。如果有错误,可以Debug.Log(www.erro)调试
现在模拟WWW下载本地和网络上的图片。。本地。可以通过Application.dataPath获取游戏运行的路径,比如:
在unit3d种创建一个平面,把下载的图片用于这个平面上
using UnityEngine;
using System.Collections; /// <summary>
/// 测试下载本地图片和网络图片
/// </summary>
public class downImg : MonoBehaviour { //本机下载的贴图
private Texture txt0;
//服务器下载贴图
private Texture txt1;
/// <summary>
/// 加载本机图片
/// </summary>
/// <returns></returns>
IEnumerator loadLocal()
{
//本机下载
if (txt0 == null)
{
//本机资源的路径
/*
* Application.dataPath:包含游戏数据文件夹的路径(只读)。Assets目录下
比如:E:/u3d/Assets/1.jpg
* 因为要是url路径,所以前面要加 file://
*/ WWW date = new WWW("file://" + Application.dataPath + "/1.jpg");
//等待下载完成
yield return date;
//得到下载的贴图
txt0 = date.texture;
}
//更换下载的图片
renderer.material.mainTexture = txt0;
} IEnumerator loadNetWork()
{
//服务器网页下载
if (txt1 == null)
{
//服务器的资源url
WWW date = new WWW("http://img0.bdstatic.com/img/image/shouye/xinshouye/qiche116.jpg");
//等待下载完成
yield return date;
//得到下载的图片
txt1 = date.texture;
}
//更换下载的图片
renderer.material.mainTexture = txt1;
} void OnGUI()
{
if (GUILayout.Button("下载本机贴图"))
{
StartCoroutine(loadLocal());
}
if (GUILayout.Button("下载服务器贴图"))
{
StartCoroutine(loadNetWork());
}
}
}
4、创建本地服务器
using UnityEngine;
using System.Collections; /// <summary>
/// 测试服务器
/// </summary>
public class CServer : MonoBehaviour
{ //端口号
int port = ; //聊天信息
string receiveMessage = string.Empty; //滚动视图位置
Vector2 scrollPositon; //移动信息
string MoveInfo = string.Empty;
void OnGUI()
{
//网络连接状态
switch (Network.peerType)
{
//服务器未开启状态
case NetworkPeerType.Disconnected:
StartServer();
break;
//成功连接服务器
case NetworkPeerType.Server:
Server();
break;
//正在尝试连接
case NetworkPeerType.Connecting:
break;
}
}
/// <summary>
/// 创建本机服务器
/// </summary>
void StartServer()
{
if (GUILayout.Button("创建本机服务器"))
{
//开始创建服务器,运行10台主机连接
//InitializeServer(连接客户端数量,服务器端口号,是否支持Nat方式连接)
NetworkConnectionError error = Network.InitializeServer(, port, false); //如果连接失败,将错误信息打印出来
Debug.Log("连接状态:" + error);
}
}
void Server()
{
GUILayout.Label("服务器创建完毕,等待客户端连接。");
//得到客户端连接的数量
int length = Network.connections.Length;
for (int i = ; i < length; i++)
{
GUILayout.Label("连接服务器客户端ID:" + i);
GUILayout.Label("连接客户端IP:" + Network.connections[i].ipAddress);
GUILayout.Label("连接服务器客户端端口号:" + Network.connections[i].port);
GUILayout.Label("-------------华丽的分割线-------------------");
}
//断开服务器
if (GUILayout.Button("断开服务器"))
{
Network.Disconnect();
receiveMessage = string.Empty;
MoveInfo = string.Empty;
} //创建一个滚动视图,用来显示聊天信息
scrollPositon = GUILayout.BeginScrollView(scrollPositon, GUILayout.Width(), GUILayout.Height());
//显示聊天信息
GUILayout.Box(receiveMessage);
//显示玩家移动信息
GUILayout.Box(MoveInfo);
GUILayout.EndScrollView();
} /// <summary>
/// 接收信息
/// </summary>
/// <param name="message">消息</param>
/// <param name="info">消息附带信息</param>
[RPC] //标识,说明是接收信息 C#中必须这样
void RequestMessage(string message, NetworkMessageInfo info)
{
receiveMessage += string.Format("\n发送者{0}:{1}", info.sender, message);
} /// <summary>
/// 接收模型移动信息
/// </summary>
/// <param name="message"></param>
/// <param name="info"></param>
[RPC]
void RequestMove(string message, NetworkMessageInfo info)
{
MoveInfo += string.Format("\n移动者{0}:执行了{1}", info.sender, message);
}
}
unity3d-多媒体与网络的更多相关文章
- Unity3d 网络编程(一)(Unity3d内建网络Network介绍)
首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库. RakNet.所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封 ...
- Unity3D笔记二十 多媒体与网络
1 游戏音频 1.游戏音乐:如游戏背景音乐 2.游戏音效:如开枪或打怪物时“砰砰”的游戏音效 Unity 3D游戏引擎共支持4种音乐格式的文件,具体如下. aiff:适用于较短的音乐文件,可用作游戏音 ...
- Unity3d 网络编程(二)(Unity3d内建网络各项參数介绍)
这里是全部Unity3d在网络中能用到相关的类及方法.纵观參数功能, Unity3d来写一个手游是不二的选择: RPC 能够传递的參数 int float string NetworkPlayer N ...
- Unity3D编程学习分享
学习地址:http://www.ixueyun.com/lessons/detail-lessonId-692.html 一.课程概述: 以前大部分3D游戏出现在pc和ps.XBox等专业游戏主机上, ...
- Unity3D之Unity3D 4.3.0 破解方法
Dear All 破解有风险,破解不尊重知识产权,如果有涉及请删除或者联系我……以下呢 是我这几天捣鼓的4.3.0版本 供学习!请大家支持正版! 1.下载最新版本 我是在Unity官网下载的最新版本 ...
- 值得推荐的C/C++框架和库
值得推荐的C/C++框架和库 [本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看 ...
- [转]C/C++ 程序员必须收藏的资源大全
from: https://github.com/jobbole/awesome-cpp-cn C++ 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列 ...
- [转载]C/C++框架和库
C/C++框架和库 装载自:http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得学习的C语言开源项目 Webbench Web ...
- Java以基础类库
Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...
- 最全面的 C++ 资源、框架大全
转载自 http://www.codeceo.com/article/cpp-resource-framework.html#0-tsina-1-99850-397232819ff9a47a7b7 ...
随机推荐
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- CCPC-Wannafly Winter Camp Day4 Div1 - 最小边覆盖 - [线段树]
题目链接:https://zhixincode.com/contest/18/problem/C?problem_id=261 样例输入 1 4 21 23 4 样例输出 1 Yes 样例输入 2 4 ...
- [转载]win7x64下的redis安装与使用
原文应用为:`https://www.cnblogs.com/koal/p/5484916.html` 先引用百度百科的一段话吧,具体可以到百科查看吧. Redis是一个开源的使用ANSI C语言编写 ...
- tensorflow一些常用函数的使用注意
tf.abs() 求tensor中数据的绝对值 tf.sign() 每一个数据都执行sigmod函数,得到对应的数值 tf.reduce_sum() 对不同维度数据求和.注意:1:求和每一行 0:求和 ...
- gensim Word2Vec 训练和使用(Model一定要加载到内存中,节省时间!!!)
训练模型利用gensim.models.Word2Vec(sentences)建立词向量模型该构造函数执行了三个步骤:建立一个空的模型对象,遍历一次语料库建立词典,第二次遍历语料库建立神经网络模型可以 ...
- 【每日一题】 UVA - 1588 Kickdown
题意:uva的题,每道都是有背景的orz,都是阅读理解 题解:暴力模拟,拿着短的那个串,对着长的一格一格往左滑,每滑一格暴力扫一遍.然后再从头往右滑,我这里wa了三发,wa了后习惯性瞎改,改到后来循环 ...
- confd
1.下载安装confd ]# wget https://github.com/kelseyhightower/confd/releases/download/v0.15.0/confd-0.15.0- ...
- Chap1 引言[The Linux Command Line]
附上链接:http://billie66.github.io/TLCL/book/chap01.html Content: part1-Introduction part2-Learning The ...
- css样式重置样式
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, ci ...
- 【pyqtgraph】pyqtgraph-鼠标互动
pyqtgraph绘图库官方文档学习-鼠标互动(mouse interaction) 鼠标互动 大多数使用pyqtgraph数据可视化的应用程序都会生成可以使用鼠标进行交互式缩放,平移和配置的小部件. ...