单机问题解决了,接下来是动态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的,但是已经有些地方用了,还是算了。

UnityWebPlayer使用(2) 动态改变src相关推荐

  1. 解决javascript动态改变img的src属性图片不显示问题

    解决javascript动态改变img的src属性图片不显示问题 参考文章: (1)解决javascript动态改变img的src属性图片不显示问题 (2)https://www.cnblogs.co ...

  2. 如何动态改变audio的播放的src

    如何动态改变audio的播放的src 一.总结 一句话总结:js方式在请求外部网站的时候行,php方式在请求内外部资源都行.因为php走在js前面,所以问题可以从php方面想办法. 1.如何使用js控 ...

  3. 用javascript 动态改变iframe 的src 属性

    原文地址为: 用javascript 动态改变iframe 的src 属性 <iframe id="xx"></iframe> <iframe id= ...

  4. 如何动态改变框架的大小[转]

    如何动态改变框架的大小 解决思路: 在框架所加载页中用parent.frames["框架名"].cols="值1,值2..." 或者parent.frames[ ...

  5. jQuery动态改变图片显示大小(修改)

    当我们要显示后台传过来若干个尺寸不一的图片时,为了保证图片大小的一致性及比例的协调,需要动态改变图片显示尺寸.通过搜索,我们可以从网上找到实现此功能的jQuery代码如下.这段代码可以使图片的大小保持 ...

  6. jquery动态改变图片

    动态改变图片: var bb = 1; var aa=4; $("div[page='" + bb + "'] dd").eq(aa).children(&qu ...

  7. jquery动态改变div宽度和高度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 微信小程序实现点击分享按钮时动态改变分享图片和标题

    最近在做小程序时遇到一个需求,是一个商城小程序,在每个商品上都有一个分享按钮,点击这个分享按钮就可以分享这个商品,要求分享的内容是该商品的图片和标题. 这个需求把我难住了,大家都知道在触发分享时需要提 ...

  9. 点击echarts柱状图动态改变数据项颜色样式

    首先附上参考文章连接:https://blog.csdn.net/weixin_42870683/article/details/103528254添加链接描述 今天来实现点击echarts柱状图,动 ...

  10. 【Android多屏适配】动态改变Listview item高度

    在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...

最新文章

  1. 升级安装linux ssh 升级安装
  2. chrome 占用大量内存直到网页崩溃_Chrome吃内存太夸张!几招解决Chrome占内存硬伤...
  3. linux服务器安装caffe(无root权限)
  4. 20100929 朝会内容
  5. 【火】【转】楼市三字经·新政杂戏
  6. 桌面软件开发框架大赏
  7. Ubuntu16.04安装PostgreSQL并使用pgadmin3管理数据库_图文详解
  8. 2022,云上开发的新纪元
  9. 3DMAX哪个版本最稳定?3DMAX哪个版本最好用?
  10. nginx代理frps后出现 http proxy request error: no such domain
  11. guava异步线程使用
  12. Hdu 5804 Price List【水题】
  13. Android创建前台运行的Service
  14. C语言的return用法
  15. linux点阵数字图案,新人求助 点阵识别 数字
  16. ARAP重分类:扪心自问,细节处你真的懂我吗?
  17. 小技巧:Excel顽固的名称、引用冲突的解决
  18. 大气颗粒物 PMF 源解析实践技术应用
  19. $(window).height() 和 $(document).height()的区别
  20. CSS 优化、提高性能的方法有哪些?

热门文章

  1. Ubuntu镜像下载地址:Ubuntu-14.04/16.04/18.04
  2. web应用,HTTP协议以及Django初次认识与安装
  3. java.util.Arrays$ArrayList addAll报错
  4. [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)...
  5. Oracle 11g简体中文版的安装过程及图解
  6. 写一个含数字,拼音,汉字的验证码生成类
  7. hdu 5101 n集合选2个不同集合数使和大于k
  8. effective C++ 条款 48:认识template元编程
  9. mysql definer super_技术分享 | 改写 mysqldump 解决 DEFINER 问题
  10. Qt_QPushButton 原生按钮长按