U3DPlayer UnityWebPlayer动态改变src
来源:互联网 发布:如何设置手机淘宝密码 编辑:程序博客网 时间:2024/06/05 23:36
单机问题解决了,接下来是动态src的问题,之前有看到过有解决方案的。
今天参考了:Unity动态改变src的解决方法 - 智周万物
我的目的是实现可以打开任意.unity3d文件的功能,把他的代码整理了一下,能删的删,做成了一个用户控件。
不知道为什么我的是AxUnityWebPlayer ,他的是U3DPlayer,难道他已经封装了一层?反正直接用AxUnityWebPlayer代进去能用。
代码:
public partial class U3DPlayer : UserControl
{
public static U3DPlayer AppendTo(Control parent, string path)
{
try
{
U3DPlayer player = new U3DPlayer(path);
parent.Controls.Clear();
parent.Controls.Add(player);
return player;
}
catch (Exception ex)
{
Console.WriteLine(ex);
return null;
}
}
public U3DPlayer(string path)
{
InitializeComponent();
_u3DPlayer = InitU3DPlayer();
OpenFile(path);
}
private AxUnityWebPlayer _u3DPlayer;
private void OpenFile(string path)
{
_u3DPlayer = CreateU3DPlayerEx(path, _u3DPlayer);
}
private AxUnityWebPlayer InitU3DPlayer()
{
var resources = new ComponentResourceManager(GetType());
AxHost.State state1 = ((AxHost.State)(resources.GetObject("u3dPlayer.OcxState")));
var player = CreateU3DPlayer(state1);
return player;
}
private AxUnityWebPlayer CreateU3DPlayerEx(string path, AxUnityWebPlayer player)
{
var state = GetState(path, player);
return CreateU3DPlayer(state);
}
/*
* 给unity设置src属性时,会自动生成字符串资源,并把它赋值给属性OcxState。
* 由于没办法手动生成这个字符串,因而需要通过代码,即先赋值给OcxState,再取出来的方式得到需要的字符串资源。
* 然后再将值赋给重新创建的控件。
*/
/// <summary>
/// 获取需要的字符串资源
/// </summary>
/// <param name="path"></param>
/// <param name="player"></param>
/// <returns></returns>
private static AxHost.State GetState(string path, AxUnityWebPlayer player)
{
player.src = new FileInfo(path).FullName; //这里是重点
AxHost.State state = player.OcxState;
player.Dispose();//因为之后马上就要创建新的了
return state;
}
private AxUnityWebPlayer CreateU3DPlayer(AxHost.State state1)
{
var player = new AxUnityWebPlayer() { Dock = DockStyle.Fill };
((ISupportInitialize)(player)).BeginInit();
player.OcxState = state1;
Controls.Add(player);
((ISupportInitialize)(player)).EndInit();
return player;
}
}
最后,那个OpenFile是无法改成public的,应该说是,能改,前面两次调用也没问题,但是,第三次开始就会出异常关闭程序(具体原因我也没去深究)。所以使用时就一个U3DPlayer显示一个场景,要换的话,再创建一个就好了。也就是一开始的AppendTo方法。实际上我是有点想把构造函数直接改成private的,但是已经有些地方用了,还是算了。
- U3DPlayer UnityWebPlayer动态改变src
- imageview 动态改变src,background
- Unity动态改变src的解决方法
- 用javascript 动态改变iframe 的src 属性
- asp.net 动态加载 iframe 改变iframe的src
- 动态切换图片(改变src属性值)
- IE6下面Jquery 动态改变Img src属性无效
- js 动态改变 HTML <image> 的来源(src)
- img动态改变src的参数,图片不及时更新
- 在c#中如何动态改变iframe的src值,动态指向一个网页
- 在c#中如何动态改变iframe的src值,动态指向一个网页
- 解决javascript动态改变img的src属性图片不显示问题
- 解决javascript动态改变img的src属性图片不显示问题
- embed标签在页面加载的时候动态的改变src的值,可播放的
- JavaScript之动态改变img标签里面的src属性实现图片的循环切换
- 用js动态的改变img标签里面的src属性实现图片的循环切换
- 捕捉IFrame SRC改变事件
- JS改变图片src代码
- HDU 1042 -- N! (Java)
- Js 判断网页能不能被 IFrame 嵌入
- 2015,走上人生巅峰,让APK编辑器祝您一臂之力!
- 红黑树
- Next Permutation (Java)
- U3DPlayer UnityWebPlayer动态改变src
- 字符串拷贝函数
- Python标准库之xml.etree.ElementTree
- 1、第一个OC程序
- 给按钮添加位图
- 通过eclipse卸载系统应用、文件的导出导入操作以及elcipse操作常见问题分析
- Catalan(卡特兰数)
- SEO优化示例程序
- HDU 1520 Anniversary party (树形DP)