在winform中如何嵌入unityed,请参考此帖 http://neil.wyh.blog.163.com/blog/static/3161151201361480843/但是该文中,并没有告诉如何动态设置src。这个src必须是绝对路径,而且只能在设计器进行设置,不能在代码中动态修改。这样造成的问题就是,unity3d文件必须是写死的,如果换一个路径就无效了,这样极不利于分布到其他电脑上。当然,如果这个src是http形式的,则不存在这个问题,如果是本地路径(比如c:\u.unity3d)则是个大问题。以下是解决方法,在4.5.5版本测试成功。
private void InitUnity()
{
var unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer();
((System.ComponentModel.ISupportInitialize)(unity)).BeginInit();
Controls.Add(unity);
((System.ComponentModel.ISupportInitialize)(unity)).EndInit();
unity.src = Application.StartupPath + "\\u.unity3d"; //改成自己想要的路径
AxHost.State state = unity.OcxState;
unity.Dispose();
unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer();
((System.ComponentModel.ISupportInitialize)(unity)).BeginInit();
this.SuspendLayout();
unity.Dock = DockStyle.Fill;
unity.Name = "Unity";
unity.OcxState = state;
unity.TabIndex = 0;
panel1.Controls.Add(unity); //panel1是我用的一个容器,改成this.Controls也可以
((System.ComponentModel.ISupportInitialize)(unity)).EndInit();
this.ResumeLayout(false);
}